梦想者  

最近要做的一个界面,由于数据太多且涉及到多个主子关联的表,朋友说用四个DataGrid绑定数据并实现与查询条件的联动,太麻烦而且界面肯定不好看,我用mshtml改造成这样了。


未加载数据的窗体




加载数据后的窗体


步骤:1)用Macromedia Dreamweaver生成一个名为fsallcondition.htmhtml文件,源码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
<title>废水排放情况统计</title> 
<style type="text/css">
<!-- 
body {}{ 
 margin-left: 0px; 
 margin-top: 0px; 
 margin-right: 0px; 
 margin-bottom: 0px; 

--> 
</style> 
<script language="JavaScript" src="../includes/js/common.js"></script> 
 
<script language="javascript">
  function printsetup() 
 { 
   // 打印页面设置 
 wb.execwb(8,1); 
  } 
  function printpreview() 
 { 
   // 打印页面预览 
   wb.execwb(7,1);   
  } 
  function printit() 
  { 
   if (confirm('您确定要打印本文档吗?')) 
 { 
 wb.execwb(6,6); 
 } 
  } 
</script> 
<link href="../includes/css/main.css" rel="stylesheet" type="text/css"> 
</head> 
 
<body> 
<OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height=0 id=wb name=wb width=0></OBJECT> 
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0"> 
 <tr> 
 <td align="center" valign="top"><table width="80%" border="0" cellspacing="0" cellpadding="0"> 
 <tr> 
 <td width="56%"><br> 
 <br><table width="806px" border="0" cellpadding="0" cellspacing="0" class="tableborder"> 
 <tr> 
 <td width="83" class="tdrbborder"> 排污口编号</td> 
 <td id="pwkbh" width="107" class="tdrbborder"> </td> 
 <td width="85" class="tdrbborder"> 排污口名称</td> 
 <td id="pwkmc" width="120" class="tdrbborder"> </td> 
 <td width="77" class="tdrbborder"> 排污口位置</td> 
 <td id="pwkwz" width="136" class="tdrbborder"> </td> 
 <td width="77" class="tdrbborder"> 排放去向</td> 
 <td id="pfqx" width="120" class="tdbborder"> </td> 
 </tr> 
 <tr class="font9"> 
 <td class="tdrbborder"> 接纳水体类别</td> 
 <td id="jnstlb" class="tdrbborder"> </td> 
 <td colspan="2" class="tdrbborder"> 新建项目名称及建设日期</td> 
 <td id="xjxmmcjjsrq" colspan="4" class="tdbborder"> </td> 
 </tr> 
 <tr class="font9"> 
 <td class="tdrbborder"> 监控仪器</td> 
 <td id="jkyq" colspan="7" class="tdbborder"> </td> 
 </tr> 
 <tr class="font9"> 
 <td class="tdrbborder"> 执行标准</td> 
 <td id="zxbz" colspan="7" class="tdbborder"> </td> 
 </tr> 
 <tr class="tdbborder"> 
 <td id="pwkzxbz" colspan="8" class="tdbborder"> <strong>排污口执行标准:</strong><br><br> 
 
 </td> 
 </tr> 
 <tr class="font9"> 
 <td colspan="8"><br> 
  <strong>允许排放量:   </strong> 
 <div id="pwxkzbh" style="width:200px; line-height:18pt; font:9pt">  [排污许可证编号——]</div></td> 
 </tr> 
 <tr class="font9"> 
 <td colspan="8" class="tdbborder"><table id="tblYXPFL" width="90%" border="0" align="center" cellpadding="0" cellspacing="0" class="tabletbborder"> 
 <tr> 
 <td width="20%" class="tdrbborder"> 污水允许排放量</td> 
 <td width="27%" class="tdrbborder"> 污染物</td> 
 <td width="26%" class="tdrbborder"> 许可浓度</td> 
 <td width="27%" class="tdbborder"> 许可排放量</td> 
 </tr> 
 </table> 
 <br></td> 
 </tr> 
 <tr class="font9"> 
 <td colspan="5" valign="top"><br> 
  <strong>污水排放情况:</strong> 
 <div id="pfzl" style="width:200px; line-height:18pt; font:9pt">  [排放总量——]</div></td> 
 <td colspan="3" valign="top"><br> 
  <strong>指标监测情况:</strong></td> 
 </tr> 
 <tr class="font9"> 
 <td colspan="5" valign="top"><table width="95%" border="0" align="center" cellpadding="0" cellspacing="0" class="tabletbborder"> 
 <tr> 
 <td width="28%" class="tdrbborder"> 污染物</td> 
 <td width="16%" class="tdrbborder"> 实际浓度</td> 
 <td width="17%" class="tdrbborder"> 达标排放量</td> 
 <td width="17%" class="tdrbborder"> 超标排放量</td> 
 <td width="22%" class="tdbborder"> 合计</td> 
 </tr> 
 <tr> 
 <td> </td> 
 <td> </td> 
 <td> </td> 
 <td> </td> 
 <td> </td> 
 </tr> 
 </table> 
 <br></td> 
 <td colspan="3" valign="top"><table width="95%" border="0" align="center" cellpadding="0" cellspacing="0" class="tabletbborder"> 
 <tr> 
 <td width="48%" class="tdrbborder"> 污染物</td> 
 <td width="22%" class="tdrbborder"> 检测浓度</td> 
 <td width="30%" class="tdbborder"> 检测标准浓度</td> 
 </tr> 
 <tr> 
 <td> </td> 
 <td> </td> 
 <td> </td> 
 </tr> 
 </table><br></td> 
 </tr> 
 </table></td> 
 </tr> 
 <tr> 
 <td> </td> 
 </tr> 
 <tr> 
 <td> </td> 
 </tr> 
 </table></td> 
 </tr> 
</table> 
</body> 
</html> 

关键是:为每个数据区域(TdDiv)定义一个ID,以便在程序中进行引用。

2)建立WinForm窗体,引用Microsoft.mshtml,使用Microsoft Web浏览器加载html文件,"查询"按钮用于调用向html文件中写数据的过程,"页面设置""打印预览""打印"按钮用以调用html文件中的javascript完成相应的功能。源码如下:

using System; 
using System.Drawing; 
using System.Collections; 
using System.ComponentModel; 
using System.Windows.Forms; 
 
namespace HC.WinForm 

 /**//// <summary> 
 /// frm_废水所有信息 的摘要说明。 
 /// </summary> 
 public class frm_废水所有信息 : System.Windows.Forms.Form 
 { 
 private System.Windows.Forms.Panel panel1; 
 private System.Windows.Forms.Label label1; 
 private System.Windows.Forms.ComboBox cmbPWK; 
 private System.Windows.Forms.DateTimePicker dateTimePicker1; 
 private System.Windows.Forms.Label label2; 
 private System.Windows.Forms.Label label3; 
 private System.Windows.Forms.RadioButton radYear; 
 private System.Windows.Forms.RadioButton radMonth; 
 private System.Windows.Forms.Label label4; 
 private System.Windows.Forms.Button btnQuery; 
 private System.Windows.Forms.Button btnExit; 
 private AxSHDocVw.AxWebBrowser awbMain; 
 private System.Windows.Forms.Button button3; 
 private System.Windows.Forms.Button btnPS; 
 private System.Windows.Forms.Button btnPP; 
 /**//// <summary> 
 /// 必需的设计器变量。 
 /// </summary> 
 private System.ComponentModel.Container components = null; 
 
 [STAThread] 
 static void Main() 
 { 
 Application.Run(new frm_废水所有信息()); 
 } 
 
 //单位编号 
 private string strunit = ""; 
 
 //计数器,记录页面加载的次数 
 private int intLoadTimes = 0; 
 
 public string strUnit 
 { 
 get 
 { 
 return this.strunit; 
 } 
 set 
 { 
 this.strunit = value; 
 } 
 } 
 
 private mshtml.IHTMLDocument2 doc = null; 
 
 private System.Runtime.InteropServices.Expando.IExpando ex; 
 
 private mshtml.IHTMLWindow2 win = null; 
 
 
 public frm_废水所有信息() 
 { 
 // 
 // Windows 窗体设计器支持所必需的 
 // 
 InitializeComponent(); 
 
 // 
 // TODO: 在 InitializeComponent 调用后添加任何构造函数代码 
 // 
 } 
 
 /**//// <summary> 
 /// 清理所有正在使用的资源。 
 /// </summary> 
 protected override void Dispose( bool disposing ) 
 { 
 if( disposing ) 
 { 
 if(components != null) 
 { 
 components.Dispose(); 
 } 
 } 
 base.Dispose( disposing ); 
 } 
 
 Windows 窗体设计器生成的代码#region Windows 窗体设计器生成的代码 
 /**//// <summary> 
 /// 设计器支持所需的方法 不要使用代码编辑器修改 
 /// 此方法的内容。 
 /// </summary> 
 private void InitializeComponent() 
 { 
 System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(frm_废水所有信息)); 
 this.panel1 = new System.Windows.Forms.Panel(); 
 this.button3 = new System.Windows.Forms.Button(); 
 this.btnPP = new System.Windows.Forms.Button(); 
 this.btnPS = new System.Windows.Forms.Button(); 
 this.btnExit = new System.Windows.Forms.Button(); 
 this.btnQuery = new System.Windows.Forms.Button(); 
 this.label4 = new System.Windows.Forms.Label(); 
 this.radMonth = new System.Windows.Forms.RadioButton(); 
 this.radYear = new System.Windows.Forms.RadioButton(); 
 this.label3 = new System.Windows.Forms.Label(); 
 this.dateTimePicker1 = new System.Windows.Forms.DateTimePicker(); 
 this.cmbPWK = new System.Windows.Forms.ComboBox(); 
 this.label1 = new System.Windows.Forms.Label(); 
 this.label2 = new System.Windows.Forms.Label(); 
 this.awbMain = new AxSHDocVw.AxWebBrowser(); 
 this.panel1.SuspendLayout(); 
 ((System.ComponentModel.ISupportInitialize)(this.awbMain)).BeginInit(); 
 this.SuspendLayout(); 
 // 
 // panel1 
 //  
 this.panel1.BackColor = System.Drawing.Color.White; 
 this.panel1.Controls.Add(this.button3); 
 this.panel1.Controls.Add(this.btnPP); 
 this.panel1.Controls.Add(this.btnPS); 
 this.panel1.Controls.Add(this.btnExit); 
 this.panel1.Controls.Add(this.btnQuery); 
 this.panel1.Controls.Add(this.label4); 
 this.panel1.Controls.Add(this.radMonth); 
 this.panel1.Controls.Add(this.radYear); 
 this.panel1.Controls.Add(this.label3); 
 this.panel1.Controls.Add(this.dateTimePicker1); 
 this.panel1.Controls.Add(this.cmbPWK); 
 this.panel1.Controls.Add(this.label1); 
 this.panel1.Controls.Add(this.label2); 
 this.panel1.Dock = System.Windows.Forms.DockStyle.Top; 
 this.panel1.Location = new System.Drawing.Point(0, 0); 
 this.panel1.Name = "panel1"; 
 this.panel1.Size = new System.Drawing.Size(850, 48); 
 this.panel1.TabIndex = 0; 
 // 
 // button3 
 //  
 this.button3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 
 this.button3.FlatStyle = System.Windows.Forms.FlatStyle.Popup; 
 this.button3.Location = new System.Drawing.Point(712, 13); 
 this.button3.Name = "button3"; 
 this.button3.Size = new System.Drawing.Size(56, 23); 
 this.button3.TabIndex = 5; 
 this.button3.Text = "打印(&P)"; 
 this.button3.Click += new System.EventHandler(this.button3_Click); 
 // 
 // btnPP 
 //  
 this.btnPP.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 
 this.btnPP.FlatStyle = System.Windows.Forms.FlatStyle.Popup; 
 this.btnPP.Location = new System.Drawing.Point(640, 13); 
 this.btnPP.Name = "btnPP"; 
 this.btnPP.Size = new System.Drawing.Size(64, 23); 
 this.btnPP.TabIndex = 4; 
 this.btnPP.Text = "打印预览"; 
 this.btnPP.Click += new System.EventHandler(this.btnPP_Click); 
 // 
 // btnPS 
 //  
 this.btnPS.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 
 this.btnPS.FlatStyle = System.Windows.Forms.FlatStyle.Popup; 
 this.btnPS.Location = new System.Drawing.Point(568, 13); 
 this.btnPS.Name = "btnPS"; 
 this.btnPS.Size = new System.Drawing.Size(64, 23); 
 this.btnPS.TabIndex = 3; 
 this.btnPS.Text = "页面设置"; 
 this.btnPS.Click += new System.EventHandler(this.btnPS_Click); 
 // 
 // btnExit 
 //  
 this.btnExit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 
 this.btnExit.FlatStyle = System.Windows.Forms.FlatStyle.Popup; 
 this.btnExit.Location = new System.Drawing.Point(776, 13); 
 this.btnExit.Name = "btnExit"; 
 this.btnExit.Size = new System.Drawing.Size(56, 23); 
 this.btnExit.TabIndex = 6; 
 this.btnExit.Text = "退出(&X)"; 
 this.btnExit.Click += new System.EventHandler(this.btnExit_Click); 
 // 
 // btnQuery 
 //  
 this.btnQuery.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 
 this.btnQuery.FlatStyle = System.Windows.Forms.FlatStyle.Popup; 
 this.btnQuery.Location = new System.Drawing.Point(504, 13); 
 this.btnQuery.Name = "btnQuery"; 
 this.btnQuery.Size = new System.Drawing.Size(56, 23); 
 this.btnQuery.TabIndex = 2; 
 this.btnQuery.Text = "查询(&Q)"; 
 this.btnQuery.Click += new System.EventHandler(this.btnQuery_Click); 
 // 
 // label4 
 //  
 this.label4.Location = new System.Drawing.Point(448, 16); 
 this.label4.Name = "label4"; 
 this.label4.Size = new System.Drawing.Size(32, 16); 
 this.label4.TabIndex = 7; 
 this.label4.Text = "查询"; 
 // 
 // radMonth 
 //  
 this.radMonth.Checked = true; 
 this.radMonth.Location = new System.Drawing.Point(416, 12); 
 this.radMonth.Name = "radMonth"; 
 this.radMonth.Size = new System.Drawing.Size(32, 24); 
 this.radMonth.TabIndex = 6; 
 this.radMonth.TabStop = true; 
 this.radMonth.Text = ""; 
 // 
 // radYear 
 //  
 this.radYear.Location = new System.Drawing.Point(384, 12); 
 this.radYear.Name = "radYear"; 
 this.radYear.Size = new System.Drawing.Size(32, 24); 
 this.radYear.TabIndex = 5; 
 this.radYear.Text = ""; 
 // 
 // label3 
 //  
 this.label3.Location = new System.Drawing.Point(368, 16); 
 this.label3.Name = "label3"; 
 this.label3.Size = new System.Drawing.Size(16, 16); 
 this.label3.TabIndex = 4; 
 this.label3.Text = ""; 
 // 
 // dateTimePicker1 
 //  
 this.dateTimePicker1.Location = new System.Drawing.Point(232, 14); 
 this.dateTimePicker1.Name = "dateTimePicker1"; 
 this.dateTimePicker1.Size = new System.Drawing.Size(120, 21); 
 this.dateTimePicker1.TabIndex = 1; 
 // 
 // cmbPWK 
 //  
 this.cmbPWK.Location = new System.Drawing.Point(64, 14); 
 this.cmbPWK.Name = "cmbPWK"; 
 this.cmbPWK.Size = new System.Drawing.Size(121, 20); 
 this.cmbPWK.TabIndex = 0; 
 this.cmbPWK.Text = "comboBox1"; 
 // 
 // label1 
 //  
 this.label1.Location = new System.Drawing.Point(16, 16); 
 this.label1.Name = "label1"; 
 this.label1.Size = new System.Drawing.Size(64, 16); 
 this.label1.TabIndex = 0; 
 this.label1.Text = "排污口"; 
 // 
 // label2 
 //  
 this.label2.Location = new System.Drawing.Point(200, 16); 
 this.label2.Name = "label2"; 
 this.label2.Size = new System.Drawing.Size(64, 16); 
 this.label2.TabIndex = 3; 
 this.label2.Text = "年月"; 
 // 
 // awbMain 
 //  
 this.awbMain.Dock = System.Windows.Forms.DockStyle.Fill; 
 this.awbMain.Enabled = true; 
 this.awbMain.Location = new System.Drawing.Point(0, 48); 
 this.awbMain.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("awbMain.OcxState"))); 
 this.awbMain.Size = new System.Drawing.Size(850, 408); 
 this.awbMain.TabIndex = 1; 
 this.awbMain.DocumentComplete += new AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEventHandler(this.awbMain_DocumentComplete); 
 // 
 // frm_废水所有信息 
 //  
 this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); 
 this.ClientSize = new System.Drawing.Size(850, 456); 
 this.Controls.Add(this.awbMain); 
 this.Controls.Add(this.panel1); 
 this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; 
 this.Name = "frm_废水所有信息"; 
 this.Text = "废水所有信息统计"; 
 this.Load += new System.EventHandler(this.frm_废水所有信息_Load); 
 this.panel1.ResumeLayout(false); 
 ((System.ComponentModel.ISupportInitialize)(this.awbMain)).EndInit(); 
 this.ResumeLayout(false); 
 
 } 
 #endregion 
 
 /**//// <summary> 
 /// 为cmbPWK绑定数据 
 /// </summary> 
 private void SetUnitCombo() 
 { 
 string strSQL = "SELECT 排污口编号排污口名称 FROM [PW_废水排污口] WHERE (所属单位 = '" + this.strUnit + "') ORDER BY 排污口编号"; 
 
 System.Data.DataSet dsUnit = HEWin.Sys.sysDb.GetDataSetBySql(strSQL, "废水排污口"); 
 
 this.cmbPWK.DataSource = dsUnit.Tables["废水排污口"]; 
 
 this.cmbPWK.DisplayMember = "排污口名称"; 
 
 this.cmbPWK.ValueMember = "排污口编号"; 
 
 dsUnit.Dispose(); 
 } 
 
 
 /**//// <summary> 
 /// 排污口基本情况,最多只有一行数据 
 /// </summary> 
 private string SetBasicInfo() 
 { 
 string strRet = ""; 
 
 string strSQL = "SELECT 排污口编号排污口名称排污口位置排放去向排放标准接纳水体功能类别 AS 接纳水体类别最近建设项目名称及建设日期 AS 新建项目名称及建设日期监控仪器执行标准 FROM [CX_排污口基本情况] WHERE (排污口编号 = '" + this.cmbPWK.SelectedValue.ToString() + "')"; 
 
 System.Data.DataSet dsBasicInfo = HEWin.Sys.sysDb.GetDataSetBySql(strSQL, "排污口基本情况"); 
 
 if (dsBasicInfo.Tables["排污口基本情况"].Rows.Count == 0) 
 { 
 this.win.execScript("showMD(\"环境检测管理系统\", \"errnounit.htm\", true, false, false)", "javascript"); 
 return strRet; 
 } 
 
 strRet = dsBasicInfo.Tables["排污口基本情况"].Rows[0]["排放标准"].ToString(); 
 
 mshtml.IHTMLElement2 eleTd = (mshtml.IHTMLElement2)doc.all.item("pwkbh", null); 
 
 ((mshtml.HTMLTableCellClass)eleTd).innerHTML = " <font color='blue'>" + dsBasicInfo.Tables["排污口基本情况"].Rows[0]["排污口编号"].ToString() + "</font>"; 
 
 eleTd = (mshtml.IHTMLElement2)doc.all.item("pwkmc", null); 
 
 ((mshtml.HTMLTableCellClass)eleTd).innerHTML = " <font color='blue'>" + dsBasicInfo.Tables["排污口基本情况"].Rows[0]["排污口名称"].ToString() + "</font>"; 
 
 eleTd = (mshtml.IHTMLElement2)doc.all.item("pwkwz", null); 
 
 ((mshtml.HTMLTableCellClass)eleTd).innerHTML = " <font color='blue'>" + dsBasicInfo.Tables["排污口基本情况"].Rows[0]["排污口位置"].ToString() + "</font>"; 
 
 eleTd = (mshtml.IHTMLElement2)doc.all.item("pfqx", null); 
 
 ((mshtml.HTMLTableCellClass)eleTd).innerHTML = " <font color='blue'>" + dsBasicInfo.Tables["排污口基本情况"].Rows[0]["排放去向"].ToString() + "</font>"; 
 
 eleTd = (mshtml.IHTMLElement2)doc.all.item("jnstlb", null); 
 
 ((mshtml.HTMLTableCellClass)eleTd).innerHTML = " <font color='blue'>" + dsBasicInfo.Tables["排污口基本情况"].Rows[0]["接纳水体类别"].ToString() + "</font>"; 
 
 eleTd = (mshtml.IHTMLElement2)doc.all.item("xjxmmcjjsrq", null); 
 
 ((mshtml.HTMLTableCellClass)eleTd).innerHTML = " <font color='blue'>" + dsBasicInfo.Tables["排污口基本情况"].Rows[0]["新建项目名称及建设日期"].ToString() + "</font>"; 
 
 eleTd = (mshtml.IHTMLElement2)doc.all.item("jkyq", null); 
 
 ((mshtml.HTMLTableCellClass)eleTd).innerHTML = " <font color='blue'>" + dsBasicInfo.Tables["排污口基本情况"].Rows[0]["监控仪器"].ToString() + "</font>"; 
 
 eleTd = (mshtml.IHTMLElement2)doc.all.item("zxbz", null); 
 
 ((mshtml.HTMLTableCellClass)eleTd).innerHTML = " <font color='blue'>" + dsBasicInfo.Tables["排污口基本情况"].Rows[0]["执行标准"].ToString() + "</font>"; 
 
 dsBasicInfo.Dispose(); 
 
 eleTd = null; 
 
 return strRet; 
 
 } 
 
 
 /**//// <summary> 
 /// 执行标准 
 /// </summary> 
 /// <param name="执行标准"></param> 
 private void SetExecStandard(string 执行标准
 { 
 
 if (执行标准 == "") 
 return; 
 
 string strSQL = "SELECT 执行标准编号执行标准 FROM [CX_废水执行标准] WHERE (执行标准编号 = '" + 执行标准 + "')"; 
 
 string strIH = " <strong>排污口执行标准:</strong><br><center><font color='blue'>"; 
 
 System.Data.DataSet dsES = HEWin.Sys.sysDb.GetDataSetBySql(strSQL, "废水执行标准"); 
 
 if (dsES.Tables["废水执行标准"].Rows.Count == 0) 
 { 
 strIH += "无执行标准"; 
 } 
 else 
 { 
 for(int i = 0; i < dsES.Tables["废水执行标准"].Rows.Count; i ++) 
 strIH += dsES.Tables["废水执行标准"].Rows[i]["执行标准"].ToString().Replace(" ", " ") + "<br>"; 
 } 
 
 strIH += "</font></center>"; 
 
 mshtml.IHTMLElement2 eleTd = (mshtml.IHTMLElement2)doc.all.item("pwkzxbz", null); 
 
 ((mshtml.HTMLTableCellClass)eleTd).innerHTML = strIH; 
 
 } 
 
 
 
 /**//// <summary> 
 /// 允许排放量 
 /// </summary> 
 private void SetYXPFL() 
 { 
 string strSQL = "SELECT 许可证编号污水允许排放量污染物许可浓度许可排放量 FROM [CX_废水允许排放量] WHERE (排污口编号 = '" + this.cmbPWK.SelectedValue.ToString() + "') ORDER BY 污染物"; 
 
 System.Data.DataSet dsYXPFL = HEWin.Sys.sysDb.GetDataSetBySql(strSQL, "允许排放量"); 
 
 string strScript = ""; 
 
 mshtml.IHTMLElement2 eleDiv = (mshtml.IHTMLElement2)doc.all.item("pwxkzbh", null); 
 
 if (dsYXPFL.Tables["允许排放量"].Rows.Count == 0) 
 { 
 //没有污水允许排放量时的处理 
 
 strScript = "var rowNew = tblYXPFL.insertRow();"; 
 
 //污水允许排放量 
 strScript += "var tdWSYXPFL = rowNew.insertCell();"; 
 
 //设置单元格的ColSpan4 
 strScript += "tdWSYXPFL.colSpan = 4;"; 
 
 strScript += "tdWSYXPFL.innerHTML = '<center><font color=blue>——————————————</font></center>';"; 
 
 this.win.execScript(strScript, "javascript"); 
 
 ((mshtml.HTMLDivElementClass)eleDiv).innerHTML = "  [排污许可证编号——<font color='red'></font>]"; 
 } 
 else 
 { 
 
 ((mshtml.HTMLDivElementClass)eleDiv).innerHTML = "  [排污许可证编号——<font color='red'>" + dsYXPFL.Tables["允许排放量"].Rows[0]["许可证编号"].ToString() + "</font>]"; 
 
 if (dsYXPFL.Tables["允许排放量"].Rows.Count > 1) 
 { 
 /**//* 执行Script为表添加数据行、单元格及单元格格式与数据 
 * 由于受单元格样式不同的影响,此处只添加表行数-1行数据 
 * 此循环后的代码添加最后一行数据 
 * 如果只有一行数据,不执行下面的循环 
 */ 
 for (int i = 0; i < dsYXPFL.Tables["允许排放量"].Rows.Count - 1; i++) 
 { 
 strScript = "var rowNew = tblYXPFL.insertRow();"; 
 //污水允许排放量 
 strScript += "var tdWSYXPFL = rowNew.insertCell();"; 
 strScript += "tdWSYXPFL.className = 'tdrbborder';"; 
 strScript += "tdWSYXPFL.innerHTML = ' <font color=blue>" + dsYXPFL.Tables["允许排放量"].Rows[i]["污水允许排放量"].ToString() + "</font>';"; 
 //污染物 
 strScript += "var tdWRW = rowNew.insertCell();"; 
 strScript += "tdWRW.className = 'tdrbborder';"; 
 strScript += "tdWRW.innerHTML = ' <font color=blue>" + dsYXPFL.Tables["允许排放量"].Rows[i]["污染物"].ToString() + "</font>';"; 
 //许可浓度 
 strScript += "var tdXKND = rowNew.insertCell();"; 
 strScript += "tdXKND.className = 'tdrbborder';"; 
 strScript += "tdXKND.innerHTML = ' <font color=blue>" + dsYXPFL.Tables["允许排放量"].Rows[i]["许可浓度"].ToString() + "</font>';"; 
 //许可排放量 
 strScript += "var tdXKPFL = rowNew.insertCell();"; 
 strScript += "tdXKPFL.className = 'tdbborder';"; 
 strScript += "tdXKPFL.innerHTML = ' <font color=blue>" + dsYXPFL.Tables["允许排放量"].Rows[i]["许可排放量"].ToString() + "</font>';"; 
 
 //执行上面的SCRIPT 
 this.win.execScript(strScript, "javascript"); 
 } 
 } 
 
 strScript = "var rowNew = tblYXPFL.insertRow();"; 
 //污水允许排放量 
 strScript += "var tdWSYXPFL = rowNew.insertCell();"; 
 strScript += "tdWSYXPFL.className = 'tdrborder';"; 
 strScript += "tdWSYXPFL.innerHTML = ' <font color=blue>" + dsYXPFL.Tables["允许排放量"].Rows[dsYXPFL.Tables["允许排放量"].Rows.Count - 1]["污水允许排放量"].ToString() + "</font>';"; 
 //污染物 
 strScript += "var tdWRW = rowNew.insertCell();"; 
 strScript += "tdWRW.className = 'tdrborder';"; 
 strScript += "tdWRW.innerHTML = ' <font color=blue>" + dsYXPFL.Tables["允许排放量"].Rows[dsYXPFL.Tables["允许排放量"].Rows.Count - 1]["污染物"].ToString() + "</font>';"; 
 //许可浓度 
 strScript += "var tdXKND = rowNew.insertCell();"; 
 strScript += "tdXKND.className = 'tdrborder';"; 
 strScript += "tdXKND.innerHTML = ' <font color=blue>" + dsYXPFL.Tables["允许排放量"].Rows[dsYXPFL.Tables["允许排放量"].Rows.Count - 1]["许可浓度"].ToString() + "</font>';"; 
 //许可排放量 
 strScript += "var tdXKPFL = rowNew.insertCell();"; 
 strScript += "tdXKPFL.innerHTML = ' <font color=blue>" + dsYXPFL.Tables["允许排放量"].Rows[dsYXPFL.Tables["允许排放量"].Rows.Count - 1]["许可排放量"].ToString() + "</font>';"; 
 
 //执行上面的SCRIPT 
 this.win.execScript(strScript, "javascript"); 
 } 
 
 eleDiv = null; 
 
 dsYXPFL.Dispose(); 
 
 } 
 
 private void frm_废水所有信息_Load(object sender, System.EventArgs e) 
 { 
 
 this.strUnit = "001"; 
 
 this.SetUnitCombo(); 
 
 object url = System.IO.Path.Combine(System.IO.Directory.GetCurrentDirectory(), @"html\html\fsallcondition.htm"); 
 
 object r = System.Reflection.Missing.Value; 
 
 //装载没有数据的页面 
 this.awbMain.Navigate2(ref url,ref r,ref r,ref r,ref r); 
 
 } 
 
 
 private void btnExit_Click(object sender, System.EventArgs e) 
 { 
 this.Dispose(); 
 } 
 
 
 private void btnQuery_Click(object sender, System.EventArgs e) 
 { 
 
 /**//* 
 * 每次查询前清空数据,重新加载一遍没有数据的页面即可 
 * 此事件中代码不负责具体的查询数据的工作 
 */ 
 object url = System.IO.Path.Combine(System.IO.Directory.GetCurrentDirectory(), @"html\html\fsallcondition.htm"); 
 
 object r = System.Reflection.Missing.Value; 
 
 /**//* 装载没有数据的页面 
 * Navigate2方法会引发awbMain_DocumentComplete事件 
 * awbMain_DocumentComplete事件中进行数据的查询 
 */ 
 this.awbMain.Navigate2(ref url,ref r,ref r,ref r,ref r); 
 
 } 
 
 
 /**//// <summary> 
 /// 浏览器加载完毕时的处理事件 
 /// </summary> 
 /// <param name="sender"></param> 
 /// <param name="e"></param> 
 private void awbMain_DocumentComplete(object sender, AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent e) 
 { 
 if (this.intLoadTimes == 0) 
 { 
 //第一次加载页面时执行该段代码,减少执行次数(只执行一次) 
 this.doc = (mshtml.IHTMLDocument2)this.awbMain.Document; 
 
 ex = (System.Runtime.InteropServices.Expando.IExpando)doc; 
 
 System.Reflection.PropertyInfo piform = ex.AddProperty("MainForm"); 
 
 piform.SetValue(doc, this, null); 
 
 this.win = this.doc.parentWindow; 
 } 
 /**//* 在页面中加入了 
 * <OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height=0 id=wb name=wb width=0></OBJECT> 
 * 组件后引发了两次awbMain_DocumentComplete事件 
 * 
 */ 
 else if (this.intLoadTimes > 2) 
 { 
 //不是第一次加载页面时查询数据 
 string strESBH = this.SetBasicInfo(); 
 
 this.SetExecStandard(strESBH); 
 
 this.SetYXPFL(); 
 } 
 
 this.intLoadTimes ++; 
 } 
 
 //调用HTML文件中的Javascript进行页面设置 
 private void btnPS_Click(object sender, System.EventArgs e) 
 { 
 this.win.execScript("printsetup();", "javascript"); 
 } 
 
 /**//* 调用HTML文件中的Javascript进行打印预览 
 * 调出打印预览的窗口是不能最大化的,大小取决于本窗体的大小。 
 * 
 */ 
 private void btnPP_Click(object sender, System.EventArgs e) 
 { 
 this.win.execScript("printpreview();", "javascript"); 
 } 
 
 private void button3_Click(object sender, System.EventArgs e) 
 { 
 this.win.execScript("printit();", "javascript"); 
 } 
 
 } 


这个过程中发现的两个问题:
1)在页面中加入了<OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height=0 id=wb name=wb width=0></OBJECT>组件后引发了两次awbMain_DocumentComplete事件;

2)调用HTML文件中的Javascript进行打印预览,调出打印预览的窗口是不能最大化的,大小取决于本窗体的大小。

 

posted on 2013-10-31 21:05  梦想者  阅读(286)  评论(0)    收藏  举报