啊鑫
2024-07-09 0552fcc8cb73fc3021e2915129f55a42ed3f20e5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
#region
 
using System;
using System.Collections.Generic;
using System.Data;
using CSFrameworkV5.Business;
using CSFrameworkV5.Common;
using CSFrameworkV5.Core;
using CSFrameworkV5.Interfaces.InterfaceModels;
using CSFrameworkV5.Library;
using CSFrameworkV5.Library.CommonClass;
using CSFrameworkV5.Models;
 
#endregion
 
namespace CSFrameworkV5.SystemModule
{
    /// <summary>
    ///     AdvancedFormConfig的资料管理窗体,由代码生成器(Code Generator)自动生成
    /// </summary>
    public partial class frmAdvancedFormConfig : frmBaseDataDictionary
    {
        private AdvancedFormConfig _BLLInstance;
 
        private List<FieldConfig> _LastConfig = new List<FieldConfig>();
 
        public frmAdvancedFormConfig()
        {
            InitializeComponent();
        }
 
        private void btnDesign_Click(object sender, EventArgs e)
        {
            if (txtSystemID.Text == "")
            {
                Msg.Warning("请选择系统编号!");
                txtSystemID.Focus();
                return;
            }
 
            if (txtProgramID.Text == "")
            {
                Msg.Warning("请选择程序编号!");
                txtProgramID.Focus();
                return;
            }
 
            if (txtStyleID.Text == "")
            {
                Msg.Warning("请输入方案名称!");
                txtStyleID.Focus();
                return;
            }
 
            var systemID =
                ConvertEx.ToString(txtSystemID.EditValue); //对应tb_DataSet.DBName
            var programID =
                ConvertEx.ToString(txtProgramID.EditValue); //对应TableName
            var configName = txtStyleID.Text; //方案编号
            var applyType = ConvertEx.ToString(txtApplyType.EditValue); //未使用
            var IDs = txtGroupsOrUsers.Text;
 
            if (IsAddMode)
            {
                //
                //重复检查提示: 此程序针对【所有用户】已经指定方案,方案编号为001!
                //
                //每个窗口,针对所有用户只允许保存一个方案
                //每个窗口,针对同一个组的也只允许保存一个方案
                //每个窗口,针对同一个人的也只允许保存一个方案
                var outMsg = _BLLInstance.ExistsConfig(systemID, programID,
                    configName, applyType, IDs);
                if (!string.IsNullOrEmpty(outMsg))
                {
                    Msg.Warning(outMsg);
                    return;
                }
            }
 
            if (IsEditMode || IsViewMode)
            {
                var bs =
                    _BLLInstance.DataBinderRow[sys_AdvancedFormConfig.Fields] as
                        byte[];
                var tmpList = ZipTools.DecompressionArrayList(bs);
                if (tmpList != null)
                    foreach (FieldConfig F in tmpList)
                        _LastConfig.Add(F);
            }
 
            if (_LastConfig.Count == 0)
            {
                //获取当前业务单据的主表的字段                                
                var dbName = ConvertEx.ToString(txtSystemID.EditValue);
                var listFields =
                    AdvancedFilterTools.GetTableFields(dbName, programID);
 
                //转换成字段配置对象
                foreach (var F in listFields)
                    _LastConfig.Add(new FieldConfig(F));
            }
 
            //打开配置窗体            
            frmFormConfigDetail.Execute(_LastConfig, IsViewMode);
        }
 
        private void btnEmpty_Click(object sender, EventArgs e)
        {
            ClearContainerEditorText(pnlSearch);
        }
 
        private void btnQuery_Click(object sender, EventArgs e)
        {
            //搜索数据     
            try
            {
                frmWaitingEx.ShowMe(this);
                var dt = _BLLInstance.Search(
                    ConvertEx.ToString(txt_SystemName.EditValue),
                    ConvertEx.ToString(txt_ProgramName.EditValue),
                    ConvertEx.ToString(txt_StyleID.EditValue));
                DoBindingSummaryGrid(dt); //绑定主表的Grid
                ShowSummaryPage(true); //显示Summary页面.                
            }
            finally
            {
                frmWaitingEx.HideMe(this);
            }
 
            if (gvSummary.RowCount == 0) Msg.Warning("没有找到数据!");
        }
 
        private void btnSelectUserAndGroup_Click(object sender, EventArgs e)
        {
            var type = txtApplyType.EditValue.ToStringEx();
 
            if (type == "Groups")
            {
                var codes = txtGroupsOrUsers.Text;
                if (frmChoiceGroupOrUser.ExecuteGroup(ref codes))
                    SetEditorBindingValue(txtGroupsOrUsers, codes, true);
            }
 
            if (type == "Users")
            {
                var codes = txtGroupsOrUsers.Text;
                if (frmChoiceGroupOrUser.ExecuteUser(ref codes))
                    SetEditorBindingValue(txtGroupsOrUsers, codes, true);
            }
        }
 
        protected override void
            ButtonStateChanged(UpdateType currentState) //按钮状态改变时触发的事件
        {
            base.ButtonStateChanged(currentState);
 
            txtSystemID.Enabled = IsAddMode;
            txtProgramID.Enabled = IsAddMode;
            txtApplyType.Enabled = IsAddMode;
            txtStyleID.Properties.ReadOnly = !IsAddMode;
            txtGroupsOrUsers.Properties.ReadOnly = true; //只读,必须选择组或用户
            btnSelectUserAndGroup.Enabled = IsAddMode;
 
            //必须清除缓存
            _LastConfig.Clear();
 
            if (IsAddOrEditMode)
                btnDesign.Text = "开始设计";
            else
                btnDesign.Text = "查看设计";
        }
 
        public override void DoAdd(IButtonInfo sender)
        {
            base.DoAdd(sender);
 
            if (IsAddMode)
            {
                SetEditorBindingValue(txtSystemID, Loginer.CurrentUser.DBID,
                    true);
                SetEditorBindingValue(txtApplyType, "AllUser", true);
                _BLLInstance.DataBinderRow[sys_AdvancedFormConfig.RowID] =
                    Globals.NewRowID();
                _BLLInstance.DataBinderRow[sys_AdvancedFormConfig.Account] =
                    Loginer.CurrentUser.Account;
            }
        }
 
        /// <summary>
        ///     绑定修改页面中所有输入框的数据源
        /// </summary>
        /// <param name="summary">数据源</param>
        protected override void DoBindingSummaryEditor(DataTable summary)
        {
            DoBindingEditorPanel(pcDetailEditor, summary);
 
            DoBindingEditorPanel(groupControl1, summary);
        }
 
        public override void DoSave(IButtonInfo sender)
        {
            //将配置信息对象转换为byte数组
            var bs = ZipTools.CompressionArrayList(_LastConfig);
            _BLLInstance.DataBinderRow[sys_AdvancedFormConfig.Fields] = bs;
 
            base.DoSave(sender);
        }
 
        private void frmAdvancedFormConfig_Load(object sender, EventArgs e)
        {
            InitializeForm(); //自定义初始化操作
 
            DataBinderTools.BoundDBDataSet(txt_SystemName, tb_DataSet.DBName);
            DataBinderTools.BoundFormTable(txt_ProgramName);
 
            DataBinderTools.BoundDBDataSet(txtSystemID, tb_DataSet.DBName);
            DataBinderTools.BoundFormTable(txtProgramID);
 
            DataBinderTools.BoundDBDataSet(lueSystemID);
            DataBinderTools.BoundFormTable(lueProgramID);
        }
 
        protected override void InitializeForm()
        {
            _SummaryView =
                new DevGridView(
                    gvSummary); //实例化数据主视图,此接口可支持不同的主视图,比如Grid,TreeList.
            _DetailGroupControl = pcDetailEditor; //修改页面所有输入框的容器
            _BLL = new AdvancedFormConfig(); //实例化基类业务逻辑层
            _BLLInstance = _BLL as AdvancedFormConfig; //本窗体的业务层对象引用
            base.InitializeForm();
        }
 
        protected override void ShowSummary()
        {
            //重写此方法打开窗体时不显示任何数据
        }
 
        private void txtApplyType_EditValueChanged(object sender, EventArgs e)
        {
            if (IsAddMode)
            {
                SetEditorBindingValue(txtApplyType, txtApplyType.EditValue,
                    false);
 
                btnSelectUserAndGroup.Enabled =
                    txtApplyType.EditValue != null &&
                    txtApplyType.EditValue.ToStringEx() != "AllUser";
                SetEditorBindingValue(txtGroupsOrUsers, "", true);
            }
        }
 
        //检查主表数据完整性
        protected override bool ValidatingData()
        {
            if (ConvertEx.ToString(txtSystemID.EditValue).Trim() ==
                string.Empty)
            {
                Msg.Warning("系统编号不能为空!");
                txtSystemID.Focus();
                return false;
            }
 
            if (ConvertEx.ToString(txtProgramID.EditValue).Trim() ==
                string.Empty)
            {
                Msg.Warning("程序编号不能为空!");
                txtProgramID.Focus();
                return false;
            }
 
            if (ConvertEx.ToString(txtStyleID.EditValue).Trim() == string.Empty)
            {
                Msg.Warning("方案编号不能为空!");
                txtStyleID.Focus();
                return false;
            }
 
            return true;
        }
 
        #region 自动生成的事件或方法的主体部份
 
        #endregion
    }
}