private void bindDynamicTemplate()
        {
            try
            {
                cmbDynamicTemplate.Properties.Items.Clear();

                IList list = DynamicColumnSettingHelper.GetDynamicColumnSettings(_ClientRuleObject);

                _Settings = list as List <GridDynamicColumnSettingInfo>;
                if (_Settings == null || _Settings.Count == 0)
                {
                    _Settings = new List <GridDynamicColumnSettingInfo>();
                    return;
                }

                var orderSettings = _Settings.OrderByDescending(o => o.LastModifyDate);
                foreach (var col in orderSettings)
                {
                    cmbDynamicTemplate.Properties.Items.Add(col.Name);
                }

                cmbDynamicTemplate.SelectedIndex = 0;
            }
            catch (Exception ex)
            {
                MB.WinBase.ApplicationExceptionTerminate.DefaultInstance.ExceptionTerminate(ex);
            }
        }
        private void loadDynamicColumns()
        {
            if (string.IsNullOrEmpty(cmbDynamicTemplate.Text))
            {
                return;
            }

            //根据模块名称加载动态列数据
            var dynamicColumns = DynamicColumnSettingHelper.GetDynamicColumnByTemplateName(_ClientRuleObject, cmbDynamicTemplate.Text);

            if (dynamicColumns == null)
            {
                throw new MB.Util.APPException(string.Format("获取模板 {0} 动态列失败!", cmbDynamicTemplate.Text), Util.APPMessageType.DisplayToUser);
            }

            _DsDynamic = MB.Util.MyConvert.Instance.ConvertEntityToDataSet <DynamicColumnInfo>(dynamicColumns, new string[] { "Name", "Description" });

            if (_DsDynamic == null || _DsDynamic.Tables.Count == 0)
            {
                throw new MB.Util.APPException(string.Format("动态列实体对象转换失败!"), Util.APPMessageType.DisplayToUser);
            }
        }
        void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                //保存当前设置值
                List <DynamicColumnInfo> list = new List <DynamicColumnInfo>();
                if (!string.IsNullOrEmpty(this.cmbDynamicTemplate.Text))
                {
                    DataRow[] drs = _DsSource.Tables[0].Select("IsDynamic = true");
                    if (drs.Length == 0)
                    {
                        throw new MB.Util.APPException("请选择动态显示列,动态列数据不能为空!", Util.APPMessageType.DisplayToUser);
                    }


                    foreach (DataRow dr in drs)
                    {
                        DynamicColumnInfo col = new DynamicColumnInfo();
                        col = MB.Util.MyReflection.Instance.FillModelObject <DynamicColumnInfo>(col, dr);

                        list.Add(col);
                    }
                }

                string sectionName = _ClientRuleObject.GetType().FullName + " " + _ClientRuleObject.ClientLayoutAttribute.UIXmlConfigFile;
                List <GridColumnSettingInfo> gridColumnSettings = new MB.Util.Serializer.DataContractFileSerializer <List <GridColumnSettingInfo> >(GRID_COLUMN_SETTING_FULLNAME).Read();
                if (!string.IsNullOrEmpty(this.cmbDynamicTemplate.Text))
                {
                    GridColumnSettingInfo setting = null; GridDynamicColumnSettingInfo dynSetting = null;
                    if (gridColumnSettings == null)
                    {
                        gridColumnSettings = new List <GridColumnSettingInfo>();
                    }
                    else
                    {
                        setting    = gridColumnSettings.Find(o => o.Name.Equals(sectionName));
                        dynSetting = _Settings.Find(o => o.Name.Equals(this.cmbDynamicTemplate.Text.Trim()));
                    }
                    if (dynSetting == null)
                    {
                        dynSetting                = new GridDynamicColumnSettingInfo();
                        dynSetting.Name           = this.cmbDynamicTemplate.Text.Trim();
                        dynSetting.LastModifyDate = DateTime.Now;

                        _Settings.Add(dynSetting);
                    }
                    else
                    {
                        dynSetting.LastModifyDate = DateTime.Now;
                    }
                    if (setting == null)
                    {
                        setting      = new GridColumnSettingInfo();
                        setting.Name = sectionName;

                        gridColumnSettings.Add(setting);
                    }
                    setting.DynamicColumns = _Settings;
                }

                foreach (string name in _DeleteItems)
                {
                    var item = gridColumnSettings.Find(o => o.Name.Equals(sectionName));
                    if (item != null)
                    {
                        var dynamicCol = item.DynamicColumns.Find(o => o.Name.Equals(name));
                        if (dynamicCol != null)
                        {
                            item.DynamicColumns.Remove(dynamicCol);
                        }
                        if (item.DynamicColumns.Count == 0)
                        {
                            gridColumnSettings.Remove(item);
                        }
                    }

                    DynamicColumnSettingHelper.DeleteDynamicColumnSetting(_ClientRuleObject, name);
                }

                DynamicColumnSettingHelper.SaveDynamicColumnSettings(_ClientRuleObject, this.cmbDynamicTemplate.Text, list, gridColumnSettings);

                MB.WinBase.MessageBoxEx.Show("保存成功!");

                this.DialogResult = System.Windows.Forms.DialogResult.OK;
            }
            catch (Exception ex)
            {
                MB.WinBase.ApplicationExceptionTerminate.DefaultInstance.ExceptionTerminate(ex);
            }
        }