/// <summary> /// 在GridView控件的RowEditing事件中调用,用于读取数据绑定到可编辑的控件上 /// </summary> /// <param name="TableID">没有用表名,可能此GridView控件还有细节页面,表名在保存此细节页面中已经用到,为了区别故用表ID</param> /// <param name="EditIndex">所编辑的行ID</param> /// <param name="TIDValue">主键TID的值,表一定要有TID的主键列</param> public static void GridViewEditing(ref GridView grv, int TableID, int EditIndex, int TIDValue) { string sql; string tableName; TextBox txt; DropDownList ddl; CheckBox ckb; RadioButtonList rbl; WebDate wdl; WebComboBox wbx; HtmlComboBox hbx; WebDropDownList wdd; HtmlInputText hit; //用于签名列,输入相应人的口令才能把人名放到控件中 object obj; //自定制控件 tableName = DBOpt.dbHelper.ExecuteScalar("select NAME from DMIS_SYS_TABLES where ID=" + TableID.ToString()).ToString(); sql = "select NAME,DESCR,TYPE,CUSTOM_CONTROL_NAME,CUSTOM_CONTROL_TYPE,CUSTOM_CONTROL_SVAE_TYPE from DMIS_SYS_COLUMNS where TABLE_ID=" + TableID.ToString() + " order by ORDER_ID"; DataTable dt = DBOpt.dbHelper.GetDataTable(sql); sql = "select * from " + tableName + " where TID=" + grv.DataKeys[EditIndex].Value; DbDataReader dr = DBOpt.dbHelper.GetDataReader(sql); if (dr.Read()) { for (int i = 0; i < dt.Rows.Count; i++) { if (dt.Rows[i]["CUSTOM_CONTROL_NAME"] is System.DBNull || dt.Rows[i]["CUSTOM_CONTROL_NAME"].ToString() == "") { continue; //平台中有设置此列对应的控件名,不处理 } //这种方式的后果是:如果某个控件在平台设置错误,与实际没对应,则此列不会得到修改 //如果一个表有多个GridView修改,则可以减少平台中同样一个表的个数。 obj = grv.Rows[EditIndex].FindControl(dt.Rows[i]["CUSTOM_CONTROL_NAME"].ToString()); if (obj == null) { continue; } switch (dt.Rows[i]["CUSTOM_CONTROL_TYPE"].ToString()) { case "TextBox": txt = (TextBox)obj; if (txt != null) //配置的控件名与实际不一致 { if (dr[dt.Rows[i]["NAME"].ToString()] is System.DBNull) { txt.Text = ""; } else { txt.Text = dr[dt.Rows[i]["NAME"].ToString()].ToString(); } } break; case "WebDateLib": wdl = (WebDate)obj; if (wdl != null) //配置的控件名与实际不一致 { if (dr[dt.Rows[i]["NAME"].ToString()] is System.DBNull) { wdl.setNull(); } else { wdl.Text = dr[dt.Rows[i]["NAME"].ToString()].ToString(); } } break; case "WebComboBox": wbx = (WebComboBox)obj; if (wbx != null) //配置的控件名与实际不一致 { if (dr[dt.Rows[i]["NAME"].ToString()] is System.DBNull) { wbx.Text = ""; } else { wbx.Text = dr[dt.Rows[i]["NAME"].ToString()].ToString(); } } break; case "HtmlComboBox": hbx = (HtmlComboBox)obj; if (hbx != null) //配置的控件名与实际不一致 { if (dr[dt.Rows[i]["NAME"].ToString()] is System.DBNull) { hbx.SelectedText = ""; } else { hbx.SelectedText = dr[dt.Rows[i]["NAME"].ToString()].ToString(); } } break; case "WebDropDown": wdd = (WebDropDownList)obj; if (wdd != null) //配置的控件名与实际不一致 { if (dr[dt.Rows[i]["NAME"].ToString()] is System.DBNull) { wdd.Text = ""; } else { wdd.Text = dr[dt.Rows[i]["NAME"].ToString()].ToString(); } } break; case "DropDownList": ddl = (DropDownList)obj; if (ddl != null) { if (dr[dt.Rows[i]["NAME"].ToString()] is System.DBNull) { ddl.SelectedIndex = -1; } else { if (dt.Rows[i]["CUSTOM_CONTROL_SVAE_TYPE"].ToString() == "Value") { ddl.SelectedIndex = FieldToValue.FieldToDropDownListByValue(dr[dt.Rows[i]["NAME"].ToString()], ddl); } else { ddl.SelectedIndex = FieldToValue.FieldToDropDownListByText(dr[dt.Rows[i]["NAME"].ToString()], ddl); } } } break; case "CheckBox": ckb = (CheckBox)obj; if (ckb != null) { if (dr[dt.Rows[i]["NAME"].ToString()] is System.DBNull) { ckb.Checked = false; } else { ckb.Checked = FieldToValue.FieldToCheckBox(dr[dt.Rows[i]["NAME"].ToString()]); } } break; case "RadioListButtion": rbl = (RadioButtonList)obj; if (rbl != null) { if (dr[dt.Rows[i]["NAME"].ToString()] is System.DBNull) { rbl.SelectedIndex = -1; } else { if (dt.Rows[i]["CUSTOM_CONTROL_SVAE_TYPE"].ToString() == "Value") { rbl.SelectedIndex = FieldToValue.FieldToRadioListButtonByValue(dr[dt.Rows[i]["NAME"].ToString()], rbl); } else { rbl.SelectedIndex = FieldToValue.FieldToRadioListButtonByText(dr[dt.Rows[i]["NAME"].ToString()], rbl); } } } break; case "HtmlInputText": hit = (HtmlInputText)obj; if (hit != null) //配置的控件名与实际不一致 { if (dr[dt.Rows[i]["NAME"].ToString()] is System.DBNull) { hit.Value = ""; } else { hit.Value = dr[dt.Rows[i]["NAME"].ToString()].ToString(); } } break; default: break; } } } dr.Close(); }
/// <summary> /// 通过SQL语句来生成DataRead,注意:只读取第一条数据, /// 如果SQL语句能读出多条记录,只取第一条。 /// </summary> /// <param name="page"></param> /// <param name="sql"></param> public static void CustomControlFillByTableAndWhere(Page page, string TableName, string wheres) { string sql; int tableID; TextBox txt; DropDownList ddl; CheckBox ckb; RadioButtonList rbl; WebDate wdl; WebComboBox wbx; HtmlComboBox hbx; WebDropDownList wdd; HtmlInputText hit; //用于签名列,输入相应人的口令才能把人名放到控件中 CheckBoxList cbl; tableID = Convert.ToInt16(DBOpt.dbHelper.ExecuteScalar("select ID from DMIS_SYS_TABLES where NAME='" + TableName + "'")); sql = "select NAME,DESCR,TYPE,CUSTOM_CONTROL_NAME,CUSTOM_CONTROL_TYPE,CUSTOM_CONTROL_SVAE_TYPE from DMIS_SYS_COLUMNS where TABLE_ID=" + tableID.ToString() + " order by ORDER_ID"; DataTable dt = DBOpt.dbHelper.GetDataTable(sql); sql = "select * from " + TableName + " where " + wheres; DbDataReader dr = DBOpt.dbHelper.GetDataReader(sql); if (dr.Read()) { for (int i = 0; i < dt.Rows.Count; i++) { // if(dr[dt.Rows[i]["NAME"].ToString()] is System.DBNull) continue; //"没有值,则不处理" 也要处理 if (dt.Rows[i]["CUSTOM_CONTROL_NAME"] is System.DBNull || dt.Rows[i]["CUSTOM_CONTROL_NAME"].ToString() == "") { continue; //平台中有设置此列对应的控件名,不处理 } switch (dt.Rows[i]["CUSTOM_CONTROL_TYPE"].ToString()) { case "TextBox": txt = (TextBox)page.FindControl(dt.Rows[i]["CUSTOM_CONTROL_NAME"].ToString()); if (txt != null) //配置的控件名与实际不一致 { if (dr[dt.Rows[i]["NAME"].ToString()] is System.DBNull) { txt.Text = ""; } else { txt.Text = dr[dt.Rows[i]["NAME"].ToString()].ToString(); } } break; case "WebDateLib": wdl = (WebDate)page.FindControl(dt.Rows[i]["CUSTOM_CONTROL_NAME"].ToString()); if (wdl != null) //配置的控件名与实际不一致 { if (dr[dt.Rows[i]["NAME"].ToString()] is System.DBNull) { wdl.Text = "1900-1-1"; } else { wdl.Text = dr[dt.Rows[i]["NAME"].ToString()].ToString(); } } break; case "WebComboBox": wbx = (WebComboBox)page.FindControl(dt.Rows[i]["CUSTOM_CONTROL_NAME"].ToString()); if (wbx != null) //配置的控件名与实际不一致 { if (dr[dt.Rows[i]["NAME"].ToString()] is System.DBNull) { wbx.Text = ""; } else { wbx.Text = dr[dt.Rows[i]["NAME"].ToString()].ToString(); } } break; case "HtmlComboBox": hbx = (HtmlComboBox)page.FindControl(dt.Rows[i]["CUSTOM_CONTROL_NAME"].ToString()); if (hbx != null) //配置的控件名与实际不一致 { if (dr[dt.Rows[i]["NAME"].ToString()] is System.DBNull) { hbx.SelectedText = ""; } else { hbx.SelectedText = dr[dt.Rows[i]["NAME"].ToString()].ToString(); } } break; case "WebDropDown": wdd = (WebDropDownList)page.FindControl(dt.Rows[i]["CUSTOM_CONTROL_NAME"].ToString()); if (wdd != null) //配置的控件名与实际不一致 { if (dr[dt.Rows[i]["NAME"].ToString()] is System.DBNull) { wdd.Text = ""; } else { wdd.Text = dr[dt.Rows[i]["NAME"].ToString()].ToString(); } } break; case "DropDownList": ddl = (DropDownList)page.FindControl(dt.Rows[i]["CUSTOM_CONTROL_NAME"].ToString()); if (ddl != null) { if (dr[dt.Rows[i]["NAME"].ToString()] is System.DBNull) { ddl.SelectedIndex = -1; } else { if (dt.Rows[i]["CUSTOM_CONTROL_SVAE_TYPE"].ToString() == "Value") { ddl.SelectedIndex = FieldToValue.FieldToDropDownListByValue(dr[dt.Rows[i]["NAME"].ToString()], ddl); } else { ddl.SelectedIndex = FieldToValue.FieldToDropDownListByText(dr[dt.Rows[i]["NAME"].ToString()], ddl); } } } break; case "CheckBox": ckb = (CheckBox)page.FindControl(dt.Rows[i]["CUSTOM_CONTROL_NAME"].ToString()); if (ckb != null) { if (dr[dt.Rows[i]["NAME"].ToString()] is System.DBNull) { ckb.Checked = false; } else { ckb.Checked = FieldToValue.FieldToCheckBox(dr[dt.Rows[i]["NAME"].ToString()]); } } break; case "CheckBoxList": cbl = (CheckBoxList)page.FindControl(dt.Rows[i]["CUSTOM_CONTROL_NAME"].ToString()); if (cbl != null) { if (dr[dt.Rows[i]["NAME"].ToString()] is System.DBNull) { for (int k = 0; k < cbl.Items.Count; k++) { cbl.Items[k].Selected = false; } } else { string[] text = dr[dt.Rows[i]["NAME"].ToString()].ToString().Split(','); for (int z = 0; z < cbl.Items.Count; z++) { for (int j = 0; j < text.Length; j++) { if (cbl.Items[z].Text == text[j]) { cbl.Items[z].Selected = true; } } } } } break; case "RadioButtonList": rbl = (RadioButtonList)page.FindControl(dt.Rows[i]["CUSTOM_CONTROL_NAME"].ToString()); if (rbl != null) { if (dr[dt.Rows[i]["NAME"].ToString()] is System.DBNull) { rbl.SelectedIndex = -1; } else { if (dt.Rows[i]["CUSTOM_CONTROL_SVAE_TYPE"].ToString() == "Value") { rbl.SelectedIndex = FieldToValue.FieldToRadioListButtonByValue(dr[dt.Rows[i]["NAME"].ToString()], rbl); } else { rbl.SelectedIndex = FieldToValue.FieldToRadioListButtonByText(dr[dt.Rows[i]["NAME"].ToString()], rbl); } } } break; case "HtmlInputText": hit = (HtmlInputText)page.FindControl(dt.Rows[i]["CUSTOM_CONTROL_NAME"].ToString()); if (hit != null) //配置的控件名与实际不一致 { if (dr[dt.Rows[i]["NAME"].ToString()] is System.DBNull) { hit.Value = ""; } else { hit.Value = dr[dt.Rows[i]["NAME"].ToString()].ToString(); } } break; default: break; } } } dr.Close(); }