/// <summary> /// 编辑界面的数据绑定分3步来完成 /// 1,先绑定ComboBox 的数据源 /// 2,绑定点击选择数据的数据源 /// 3,控件编辑绑定 /// </summary> /// <param name="colPropertys"></param> /// <param name="columnEditInfoList"></param> /// <param name="dataSource"></param> /// <param name="dataBindingProvider"></param> /// <param name="bindingOptions"></param> /// <returns></returns> public List <ColumnBindingInfo> CreateDataBinding(Dictionary <string, MB.WinBase.Common.ColumnPropertyInfo> colPropertys, Dictionary <string, MB.WinBase.Common.ColumnEditCfgInfo> columnEditInfoList, BindingSourceEx dataSource, MB.WinBase.Binding.IDataBindingProvider dataBindingProvider, DataBindingOptions bindingOptions) { //在数据绑定之前先清空文本框的数据 ClearBindingEditCtl(dataBindingProvider); List <ColumnBindingInfo> bindingDatas = new List <ColumnBindingInfo>(); Dictionary <string, MB.WinBase.Common.ColumnPropertyInfo> colsCfg = colPropertys; string[] fieldPropertys = getDataPropertysNames(dataSource); if (fieldPropertys == null || fieldPropertys.Length == 0) { throw new Exceptions.DataBindingException(); } ctlDataBingByDataBinding(colPropertys, fieldPropertys, dataSource, dataBindingProvider, bindingOptions, bindingDatas, columnEditInfoList); //设置绑定Lable 的 描述展示信息 ResetLableCaption(dataBindingProvider, colsCfg); return(bindingDatas); }
/// <summary> /// 重新设置绑定的Lable 描述。 /// </summary> /// <param name="dataBindingProvider"></param> public void ResetLableCaption(MB.WinBase.Binding.IDataBindingProvider dataBindingProvider, Dictionary <string, MB.WinBase.Common.ColumnPropertyInfo> colPropertys) { if (dataBindingProvider == null || dataBindingProvider.DataBindings == null) { return; } foreach (Control ctl in dataBindingProvider.DataBindings.Keys) { string ctlName = ctl.GetType().Name; if (Array.IndexOf <string>(_DESCRIPTION_CONTROLS, ctlName) < 0) { continue; } string propertyName = dataBindingProvider.DataBindings[ctl].ColumnName; if (!colPropertys.ContainsKey(propertyName)) { continue; } var colInfo = colPropertys[propertyName]; System.Drawing.Color canEditColor = colInfo.CanEdit ? System.Drawing.Color.Blue : System.Drawing.Color.Black; ctl.ForeColor = colInfo.IsNull ? canEditColor : System.Drawing.Color.Red; if (colInfo.IsKey) { ctl.Font = new System.Drawing.Font(ctl.Font, System.Drawing.FontStyle.Bold); } } }
/// <summary> /// 编辑界面的数据绑定分3步来完成 /// 1,先绑定ComboBox 的数据源 /// 2,绑定点击选择数据的数据源 /// 3,控件编辑绑定 /// </summary> /// <param name="dataSource"></param> /// <param name="xmlFileName"></param> /// <param name="dataBindingProvider"></param> /// <param name="bindingOptions"></param> /// <returns></returns> public List <ColumnBindingInfo> CreateDataBinding(BindingSourceEx dataSource, string xmlFileName, MB.WinBase.Binding.IDataBindingProvider dataBindingProvider, DataBindingOptions bindingOptions) { Dictionary <string, MB.WinBase.Common.ColumnPropertyInfo> colPropertys = MB.WinBase.LayoutXmlConfigHelper.Instance.GetColumnPropertys(xmlFileName); Dictionary <string, MB.WinBase.Common.ColumnEditCfgInfo> columnEditInfoList = MB.WinBase.LayoutXmlConfigHelper.Instance.GetColumnEdits(colPropertys, xmlFileName); return(CreateDataBinding(colPropertys, columnEditInfoList, dataSource, dataBindingProvider, bindingOptions)); }
/// <summary> /// 清除输入框的值。 /// </summary> /// <param name="dataBindingProvider"></param> public void ClearBindingEditCtl(MB.WinBase.Binding.IDataBindingProvider dataBindingProvider) { if (dataBindingProvider == null || dataBindingProvider.DataBindings == null) { return; } foreach (Control ctl in dataBindingProvider.DataBindings.Keys) { string ctlName = ctl.GetType().Name; if (Array.IndexOf <string>(MyDataBindingProvider.INCLUDE_TAG_TEXT_CTLS, ctlName) >= 0) { ctl.Text = string.Empty; } } }
/// <summary> /// 编辑界面的数据绑定分3步来完成 /// 1,先绑定ComboBox 的数据源 /// 2,绑定点击选择数据的数据源 /// 3,控件编辑绑定 /// </summary> /// <param name="clientBaseRule"></param> /// <param name="dataSource"></param> /// <param name="ctls"></param> /// <returns></returns> public List <ColumnBindingInfo> CreateDataBinding(IFace.IClientRule clientBaseRule, BindingSourceEx dataSource, MB.WinBase.Binding.IDataBindingProvider dataBindingProvider, DataBindingOptions bindingOptions) { ////在数据绑定之前先清空文本框的数据 //ClearBindingEditCtl(dataBindingProvider); //List<ColumnBindingInfo> bindingDatas = new List<ColumnBindingInfo>(); //Dictionary<string, MB.WinBase.Common.ColumnPropertyInfo> colsCfg = clientBaseRule.UIRuleXmlConfigInfo.GetDefaultColumns(); //string[] propertys = getDataPropertysNames(dataSource); //if (propertys == null || propertys.Length == 0) // throw new Exceptions.DataBindingException(); //ctlDataBingByDataBinding(colsCfg, propertys, dataSource, dataBindingProvider, bindingOptions, bindingDatas, clientBaseRule.UIRuleXmlConfigInfo.ColumnsCfgEdit); ////设置绑定Lable 的 描述展示信息 //ResetLableCaption(dataBindingProvider, colsCfg); //return bindingDatas; return(CreateDataBinding(clientBaseRule.UIRuleXmlConfigInfo.GetDefaultColumns(), clientBaseRule.UIRuleXmlConfigInfo.ColumnsCfgEdit, dataSource, dataBindingProvider, bindingOptions)); }
//绑定ButtonClick #region 内部函数处理... //控件编辑绑定。 private void ctlDataBingByDataBinding(Dictionary <string, MB.WinBase.Common.ColumnPropertyInfo> editCfgColumns, string[] dataPropertys, System.Windows.Forms.BindingSource bindingSource, MB.WinBase.Binding.IDataBindingProvider dataBindingProvider, DataBindingOptions bindingOptions, List <ColumnBindingInfo> bindingDatas, Dictionary <string, MB.WinBase.Common.ColumnEditCfgInfo> columnEditInfoList) { if (dataBindingProvider == null || dataBindingProvider.DataBindings == null || dataBindingProvider.DataBindings.Count == 0) { return; } Dictionary <Control, DesignColumnXmlCfgInfo> bindingCtls = dataBindingProvider.DataBindings; foreach (Control ctl in bindingCtls.Keys) { string ctlTypeName = ctl.GetType().Name; if (_DESCRIPTION_CONTROLS.Contains <string>(ctlTypeName)) { continue; } string ctlBindingName = getCtlBindingPropertyName(ctl); string dataPropertyName = bindingCtls[ctl].ColumnName; if (Array.IndexOf <string>(dataPropertys, dataPropertyName) < 0) { continue; } MB.WinBase.Common.ColumnPropertyInfo colCfg = null; if (editCfgColumns.ContainsKey(dataPropertyName)) { colCfg = editCfgColumns[dataPropertyName]; } if (editCfgColumns != null && editCfgColumns.ContainsKey(dataPropertyName)) { //特殊处理,绑定到特殊的控件。 ColumnBindingInfo ctlBinding = new ColumnBindingInfo(dataPropertyName, colCfg, ctl); if (!colCfg.CanEdit) { setEditControlReadonly(ctl, true); } //如果是string 类型 并且设置MacLength 同时绑订的是TextBox 控件,那么就限制它的输入长度 if (string.Compare(colCfg.DataType, "System.String", true) == 0) { TextBox txtBox = ctl as TextBox; if (txtBox != null && colCfg.MaxLength > 0) { txtBox.MaxLength = colCfg.MaxLength; } } bindingDatas.Add(ctlBinding); } System.Windows.Forms.Binding binding = new System.Windows.Forms.Binding(ctlBindingName, bindingSource, dataPropertyName, true, DataSourceUpdateMode.OnPropertyChanged); //DataSourceUpdateMode.OnValidation if (colCfg != null) { formateBindControl(ctl, binding, colCfg); } //编辑界面的数据绑定分3步来完成 //1,先绑定ComboBox 的数据源 if (columnEditInfoList != null && columnEditInfoList.Count > 0) { FillComboxLookUp(ctl, dataPropertyName, editCfgColumns, columnEditInfoList, false); } //2,绑定点击选择数据的数据源 if (columnEditInfoList != null && columnEditInfoList.ContainsKey(dataPropertyName)) { bindingToSpecialEditCtl(ctl, columnEditInfoList[dataPropertyName]); } //3,控件编辑绑定 ctl.DataBindings.Add(binding); } }