public void BindNumType(MapAttr mattr) { this.Pub1.AddTable("align=left"); this.Pub1.AddCaptionLeft("数据获取 - 当一个字段值需要从其它表中得到时,请设置此功能。"); this.Pub1.AddTR(); this.Pub1.Add("<TD>"); RadioBtn rb = new RadioBtn(); rb.GroupName = "s"; rb.Text = "方式0:不做任何设置。"; rb.ID = "RB_Way_0"; if (mattr.HisAutoFull == AutoFullWay.Way0) { rb.Checked = true; } this.Pub1.AddFieldSet(rb); this.Pub1.Add("不做任何设置。"); this.Pub1.AddFieldSetEnd(); this.Pub1.AddTDEnd(); this.Pub1.AddTREnd(); this.Pub1.AddTR(); this.Pub1.Add("<TD>"); rb = new RadioBtn(); rb.GroupName = "s"; rb.Text = "方式1:本表单中数据计算。"; //""; rb.ID = "RB_Way_1"; if (mattr.HisAutoFull == AutoFullWay.Way1_JS) { rb.Checked = true; } this.Pub1.AddFieldSet(rb); this.Pub1.Add("比如:@单价*@数量"); this.Pub1.AddBR(); TextBox tb = new TextBox(); tb.ID = "TB_JS"; tb.Width = 450; tb.TextMode = TextBoxMode.MultiLine; tb.Rows = 5; if (mattr.HisAutoFull == AutoFullWay.Way1_JS) { tb.Text = mattr.AutoFullDoc; } this.Pub1.Add(tb); this.Pub1.AddFieldSetEnd(); this.Pub1.AddTDEnd(); this.Pub1.AddTREnd(); // 方式2 利用SQL自动填充 this.Pub1.AddTR(); this.Pub1.Add("<TD>"); rb = new RadioBtn(); rb.GroupName = "s"; rb.Text = "方式2:利用SQL自动填充。"; rb.ID = "RB_Way_2"; if (mattr.HisAutoFull == AutoFullWay.Way2_SQL) { rb.Checked = true; } this.Pub1.AddFieldSet(rb); this.Pub1.Add("比如:Select Addr From 商品表 WHERE No=@FK_Pro FK_Pro是本表中的任意字段名<BR>"); tb = new TextBox(); tb.ID = "TB_SQL"; tb.Width = 450; tb.TextMode = TextBoxMode.MultiLine; tb.Rows = 5; if (mattr.HisAutoFull == AutoFullWay.Way2_SQL) { tb.Text = mattr.AutoFullDoc; } this.Pub1.Add(tb); this.Pub1.AddFieldSetEnd(); this.Pub1.AddTDEnd(); this.Pub1.AddTREnd(); // 方式3 本表单中外键列 this.Pub1.AddTR(); this.Pub1.Add("<TD>"); rb = new RadioBtn(); rb.GroupName = "s"; rb.Text = "方式3:本表单中外键列。"; // rb.Text = "方式3:本表单中外键列</font></b>"; rb.ID = "RB_Way_3"; if (mattr.HisAutoFull == AutoFullWay.Way3_FK) { rb.Checked = true; } this.Pub1.AddFieldSet(rb); this.Pub1.Add("比如:表单中有商品编号列,需要填充商品地址、供应商电话。"); this.Pub1.AddBR(); // 让它等于外键表的一个值。 Attrs attrs = null; MapData md = new MapData(); md.No = mattr.FK_MapData; if (md.RetrieveFromDBSources() == 0) { attrs = md.GenerHisMap().HisFKAttrs; } else { MapDtl mdtl = new MapDtl(); mdtl.No = mattr.FK_MapData; attrs = mdtl.GenerMap().HisFKAttrs; } if (attrs.Count > 0) { } else { rb.Enabled = false; if (rb.Checked) { rb.Checked = false; } this.Pub1.Add("@本表没有外键字段。"); } foreach (Attr attr in attrs) { if (attr.IsRefAttr) { continue; } rb = new RadioBtn(); rb.Text = attr.Desc; rb.ID = "RB_FK_" + attr.Key; rb.GroupName = "sd"; if (mattr.AutoFullDoc.Contains(attr.Key)) { rb.Checked = true; } this.Pub1.Add(rb); DDL ddl = new DDL(); ddl.ID = "DDL_" + attr.Key; string sql = ""; switch (BP.SystemConfig.AppCenterDBType) { case DBType.Oracle: case DBType.Informix: continue; sql = "Select fname as 'No' ,fDesc as 'Name' FROM Sys_FieldDesc WHERE tableName='" + attr.HisFKEn.EnMap.PhysicsTable + "'"; break; default: sql = "Select name as 'No' ,Name as 'Name' from syscolumns WHERE ID=OBJECT_ID('" + attr.HisFKEn.EnMap.PhysicsTable + "')"; break; } // string sql = "Select fname as 'No' ,fDesc as 'Name' FROM Sys_FieldDesc WHERE tableName='" + attr.HisFKEn.EnMap.PhysicsTable + "'"; //string sql = "Select NO , NAME FROM Port_Emp "; DataTable dt = DBAccess.RunSQLReturnTable(sql); foreach (DataRow dr in dt.Rows) { // ddl.Items.Add(new ListItem(this.ToE("Field") + dr[0].ToString() + " " + this.ToE("Desc") + " " + dr[1].ToString(), dr[0].ToString())); ListItem li = new ListItem(dr[0].ToString() + ";" + dr[1].ToString(), dr[0].ToString()); if (mattr.AutoFullDoc.Contains(dr[0].ToString())) { li.Selected = true; } ddl.Items.Add(li); } this.Pub1.Add(ddl); this.Pub1.AddBR(); } this.Pub1.AddFieldSetEnd(); this.Pub1.AddTDEnd(); this.Pub1.AddTREnd(); // 方式3 本表单中外键列 this.Pub1.AddTR(); this.Pub1.Add("<TD>"); rb = new RadioBtn(); rb.GroupName = "s"; rb.Text = "方式4:对一个从表的列求值。"; rb.ID = "RB_Way_4"; if (mattr.HisAutoFull == AutoFullWay.Way4_Dtl) { rb.Checked = true; } this.Pub1.AddFieldSet(rb); this.Pub1.Add("比如:对从表中的列求值。"); this.Pub1.AddBR(); // 让它对一个从表求和、求平均、求最大、求最小值。 MapDtls dtls = new MapDtls(mattr.FK_MapData); if (dtls.Count > 0) { } else { rb.Enabled = false; if (rb.Checked) { rb.Checked = false; } // this.Pub1.Add("@没有从表。"); } foreach (MapDtl dtl in dtls) { DDL ddlF = new DDL(); ddlF.ID = "DDL_" + dtl.No + "_F"; MapAttrs mattrs1 = new MapAttrs(dtl.No); int count = 0; foreach (MapAttr mattr1 in mattrs1) { if (mattr1.LGType != FieldTypeS.Normal) { continue; } if (mattr1.KeyOfEn == MapAttrAttr.MyPK) { continue; } if (mattr1.IsNum == false) { continue; } switch (mattr1.KeyOfEn) { case "OID": case "RefOID": case "FID": continue; default: break; } count++; ListItem li = new ListItem(mattr1.Name, mattr1.KeyOfEn); if (mattr.HisAutoFull == AutoFullWay.Way4_Dtl) { if (mattr.AutoFullDoc.Contains("=" + mattr1.KeyOfEn)) { li.Selected = true; } } ddlF.Items.Add(li); } if (count == 0) { continue; } rb = new RadioBtn(); rb.Text = dtl.Name; rb.ID = "RB_" + dtl.No; rb.GroupName = "dtl"; if (mattr.AutoFullDoc.Contains(dtl.No)) { rb.Checked = true; } this.Pub1.Add(rb); DDL ddl = new DDL(); ddl.ID = "DDL_" + dtl.No + "_Way"; ddl.Items.Add(new ListItem("求合计", "SUM")); ddl.Items.Add(new ListItem("求平均", "AVG")); ddl.Items.Add(new ListItem("求最大", "MAX")); ddl.Items.Add(new ListItem("求最小", "MIN")); this.Pub1.Add(ddl); if (mattr.HisAutoFull == AutoFullWay.Way4_Dtl) { if (mattr.AutoFullDoc.Contains("SUM")) { ddl.SetSelectItem("SUM"); } if (mattr.AutoFullDoc.Contains("AVG")) { ddl.SetSelectItem("AVG"); } if (mattr.AutoFullDoc.Contains("MAX")) { ddl.SetSelectItem("MAX"); } if (mattr.AutoFullDoc.Contains("MIN")) { ddl.SetSelectItem("MIN"); } } this.Pub1.Add(ddlF); this.Pub1.AddBR(); } this.Pub1.AddFieldSetEnd(); this.Pub1.AddTDEnd(); this.Pub1.AddTREnd(); #region 方式5 //this.Pub1.AddTD(); //this.Pub1.AddTR(); //this.Pub1.AddFieldSet(rb); //this.Pub1.Add(this.ToE("Way2D", "嵌入的JS")); //tb = new TextBox(); //tb.ID = "TB_JS"; //tb.Width = 450; //tb.TextMode = TextBoxMode.MultiLine; //tb.Rows = 5; //if (mattr.HisAutoFull == AutoFullWay.Way5_JS) // tb.Text = mattr.AutoFullDoc; //this.Pub1.Add(tb); //this.Pub1.AddFieldSetEnd(); //this.Pub1.AddTDEnd(); //this.Pub1.AddTREnd(); #endregion 方式5 this.Pub1.AddTRSum(); this.Pub1.AddTDBegin("aligen=center"); Button btn = new Button(); btn.ID = "Btn_Save"; btn.CssClass = "Btn"; btn.Text = " 保存 "; btn.Click += new EventHandler(btn_Click); this.Pub1.Add(btn); btn = new Button(); btn.ID = "Btn_SaveAndClose"; btn.CssClass = "Btn"; btn.Text = " 保存并关闭 "; btn.Click += new EventHandler(btn_Click); this.Pub1.Add(btn); this.Pub1.AddTREnd(); this.Pub1.AddTableEnd(); return; }