/// <summary> /// 取得label对应的xml /// </summary> /// <param name="item">blockfielditem</param> /// <returns>xml</returns> private string GetLabelXml(TBlockFieldItem item, String tableName, ref String id) { String strLabel = String.Empty; if (string.Compare(item.ControlType, "refvalbox", true) == 0) { WebControl control = null; PropertyInfo info = null; if (!string.IsNullOrEmpty(item.RefValNo) || (item.RefField != null)) { control = new WebRefVal(); control.ID = string.Format("{0}RefVal", item.DataField); (control as WebRefVal).DataSourceID = GenWebDataSource(item, tableName, "RefVal", string.Empty); (control as WebRefVal).DataBindingField = item.DataField; (control as WebRefVal).DataTextField = FSYS_REFVAL.Tables[0].Rows[0]["DISPLAY_MEMBER"].ToString(); (control as WebRefVal).DataValueField = FSYS_REFVAL.Tables[0].Rows[0]["VALUE_MEMBER"].ToString(); (control as WebRefVal).BackColor = System.Drawing.Color.Transparent; (control as WebRefVal).BorderStyle = BorderStyle.None; (control as WebRefVal).ReadOnly = true; (control as WebRefVal).Width = 100; info = control.GetType().GetProperty("BindingValue"); //id = control.ID; strLabel = GetControlXml(control, info, item.DataField, item.EditMask); } else { control = new Label(); control.ID = string.Format("{0}Label", item.DataField); strLabel = GetControlXml(control, control.GetType().GetProperty("Text"), item.DataField, item.EditMask); } //control.ID = string.Format("{0}{1}", control.ID, id); int i = strLabel.IndexOf("runat=\"server\""); strLabel = strLabel.Insert(i + 14, " Width=\"100\" BackColor=\"Transparent\""); } else { //用上面的方法实现 Label label = new Label(); label.ID = string.Format("{0}Label", item.DataField); strLabel = GetControlXml(label, label.GetType().GetProperty("Text"), item.DataField, item.EditMask); } return strLabel; }
/// <summary> /// 取得Control对应的xml /// </summary> /// <param name="item">blockfielditem</param> /// <param name="tableName">tablename</param> /// <param name="id">控件的id</param> /// <returns>xml</returns> private string GetControlXml(TBlockFieldItem item, string tableName, ref string id) { WebControl control = null; PropertyInfo info = null; #region DropDownList if (string.Compare(item.ControlType, "combobox", true) == 0) { control = new WebDropDownList(); control.ID = string.Format("{0}DropDownList", item.DataField); control.Width = new Unit(130, UnitType.Pixel); (control as WebDropDownList).DataSourceID = GenWebDataSource(item, tableName, "ComboBox", string.Empty); (control as WebDropDownList).DataMember = item.ComboEntityName; (control as WebDropDownList).DataTextField = item.ComboTextField; (control as WebDropDownList).DataValueField = item.ComboValueField; info = control.GetType().GetProperty("SelectedValue"); } #endregion #region RefVal else if (string.Compare(item.ControlType, "refvalbox", true) == 0) { #warning GenWebDataSource未完成FSYS_REFVAL部分 control = new WebRefVal(); control.ID = string.Format("{0}RefVal", item.DataField); if (!string.IsNullOrEmpty(item.RefValNo) || (item.RefField != null)) { (control as WebRefVal).DataSourceID = GenWebDataSource(item, tableName, "RefVal", string.Empty); (control as WebRefVal).DataBindingField = item.DataField; (control as WebRefVal).DataTextField = FSYS_REFVAL.Tables[0].Rows[0]["DISPLAY_MEMBER"].ToString(); (control as WebRefVal).DataValueField = FSYS_REFVAL.Tables[0].Rows[0]["VALUE_MEMBER"].ToString(); if (!string.IsNullOrEmpty(item.RefValNo)) { IDbConnection conn = WzdUtils.AllocateConnection(FClientData.DatabaseName, FClientData.DatabaseType, false); InfoCommand command = new InfoCommand(FClientData.DatabaseType); command.Connection = WzdUtils.AllocateConnection(FClientData.DatabaseName, FClientData.DatabaseType, true); //command.Connection = conn; command.CommandText = String.Format("Select * from SYS_REFVAL_D1 where REFVAL_NO = '{0}'", item.RefValNo); IDbDataAdapter adapter = WzdUtils.AllocateDataAdapter(FClientData.DatabaseType); adapter.SelectCommand = command.GetInternalCommand(); DataSet dataset = new DataSet(); WzdUtils.FillDataAdapter(FClientData.DatabaseType, adapter, dataset, item.RefValNo); if (dataset != null && dataset.Tables.Count > 0 && dataset.Tables[0].Rows.Count > 0) { foreach (DataRow DR in dataset.Tables[0].Rows) { WebRefColumn refcolumn = new WebRefColumn(); refcolumn.ColumnName = DR["FIELD_NAME"].ToString(); refcolumn.HeadText = DR["HEADER_TEXT"].ToString(); refcolumn.Width = 100; (control as WebRefVal).Columns.Add(refcolumn); } } } info = control.GetType().GetProperty("BindingValue"); } else { control = new TextBox(); control.ID = string.Format("{0}TextBox", item.DataField); (control as TextBox).MaxLength = item.Length; info = control.GetType().GetProperty("Text"); } } #endregion #region DateTimePicker else if (string.Compare(item.ControlType, "datetimebox", true) == 0) { control = new WebDateTimePicker(); control.ID = string.Format("{0}DateTimePicker", item.DataField); (control as WebDateTimePicker).MaxLength = item.Length; if (string.IsNullOrEmpty(item.EditMask)) { (control as WebDateTimePicker).DateFormat = dateFormat.ShortDate; } if (item.DataType == typeof(DateTime)) { info = control.GetType().GetProperty("Text"); } else if (item.DataType == typeof(string)) { (control as WebDateTimePicker).DateTimeType = dateTimeType.VarChar; info = control.GetType().GetProperty("DataString"); } } #endregion #region ValidateBox else if (string.Compare(item.ControlType, "validatebox", true) == 0) { control = new WebValidateBox(); control.ID = string.Format("{0}ValidateBox", item.DataField); (control as WebValidateBox).WebValidateID = string.Format("wv{0}", tableName); (control as WebValidateBox).ValidateField = item.DataField; (control as WebValidateBox).MaxLength = item.Length; info = control.GetType().GetProperty("Text"); } #endregion #region CheckBox else if (string.Compare(item.ControlType, "checkbox", true) == 0) { control = new CheckBox(); control.ID = string.Format("{0}CheckBox", item.DataField); info = control.GetType().GetProperty("Checked"); } #endregion #region TextBox else { control = new TextBox(); control.ID = string.Format("{0}TextBox", item.DataField); (control as TextBox).MaxLength = item.Length; info = control.GetType().GetProperty("Text"); } #endregion control.ID = string.Format("{0}{1}", control.ID, id); id = control.ID; item.EditMask = FormatEditMask(item.EditMask); return GetControlXml(control, info, item.DataField, item.EditMask); }