lu
2025-06-11 93bd757f4801719b769e78f4dee00847c228a55d
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
using Gs.DevApp.Entity;
using Gs.DevApp.ToolBox;
using Newtonsoft.Json;
using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
 
namespace Gs.DevApp.DevFrm.QC
{
    public partial class Frm_MesQaItemsDetect01Input : DevExpress.XtraEditors.XtraForm
    {
        string _webServiceName = "MesQaItemsDetect01Manager/";
        private string dt01Guid = "";
        bool isEdit = false;
        string strBhg = "×";
        /// <summary>
        /// 
        /// </summary>
        /// <param name="_dt01Guid">MES_QA_ITEMS_DETECT_01表GUidance</param>
        /// <param name="_blEdit">是否可编辑</param>
        public Frm_MesQaItemsDetect01Input(string _dt01Guid, bool _blEdit)
        {
            InitializeComponent();
            this.dt01Guid = _dt01Guid;
            this.isEdit = _blEdit;
            Gs.DevApp.ToolBox.UtilityHelper.SetGridViewParameterMx(gvMx1);
            //编辑事件
            gvMx1.CellValueChanged += GvMx1_CellValueChanged;
            //取消不符合条件的编辑
            //  gvMx1.ShowingEditor += GvMx1_ShowingEditor;
            //禁用样本数之外的单元格且改变颜色
            gvMx1.CustomDrawCell += GvMx1_CustomDrawCell;
            getModel();
        }
 
        /// <summary>
        /// 判断单元格的编辑性
        /// </summary>
        /// <param name="Column"></param>
        /// <param name="_maxYbs"></param>
        /// <returns></returns>
        private bool ckCol(string ColumnName, string _maxYbs)
        {
            string _FieldName = ColumnName;
            if (!_FieldName.Contains("样本"))
                return false;
            if (_FieldName == "样本数")
                return true;
 
            if (_FieldName.Contains("jg"))
                return false;
 
            if (string.IsNullOrEmpty(_maxYbs))
                return false;
            string _seqYb = _FieldName.Replace("样本", "");
            if (int.Parse(_seqYb) > int.Parse(_maxYbs))
                return false;
            return true;
        }
 
        /// <summary>
        /// 禁用样本数之外的单元格
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void GvMx1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
        {
            // 获取单元格的值
            string _maxYbs = (gvMx1.GetRowCellValue(e.RowHandle, "样本数").ToString());
            bool _bl = ckCol(e.Column.FieldName, _maxYbs);
            if (_bl)
            {
                e.Appearance.BackColor = Color.Azure;
                e.Column.MinWidth = 50;
            }
            else
            {
                e.Appearance.BackColor = Color.LightGray;
            }
            e.Column.OptionsColumn.ReadOnly = !isEdit;
            if (e.Column.Name.Contains("样本") && e.Column.Name != "样本数")
            {
                object value = gvMx1.GetRowCellValue(e.RowHandle, e.Column + "jg");
                if (value != null && value.ToString() == strBhg)
                {
                    e.Appearance.ForeColor = Color.White;
                    e.Appearance.BackColor = Color.Red;
                };
            }
        }
 
        private void GvMx1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
        {
            if (e.Column.FieldName.Contains("jg"))
                return;
            try
            {
                // 获取行句柄
                int rowHandle = e.RowHandle;
                // 获取列
                //  GridColumn col = gvMx1.Columns[e.Column.Name];
                // 获取新值
                object newValue = e.Value;
                if (newValue == null || string.IsNullOrEmpty(newValue.ToString())) { return; }
                // 获取旧值
                //   object oldValue = gvMx1.GetRowCellValue(rowHandle, col);
                //   MessageBox.Show(newValue.ToString());
                //  getModel();
                // 在这里执行你的逻辑,例如:
                //  MessageBox.Show($"行 {rowHandle},列 {col.FieldName} 的值已从 {oldValue} 改为 {newValue}");
                string dt05Guid = gvMx1.GetRowCellValue(e.RowHandle, "guid").ToString();
                string dtCol = e.Column.FieldName;
                gvMx1.CloseEditor();
                gvMx1.PostEditor();
                gvMx1.UpdateCurrentRow();
                var _obj = new
                {
                    dt05Guid = dt05Guid,
                    fSeq = dtCol,
                    fVal = newValue,
                };
                string strJson = UtilityHelper.HttpPost("", _webServiceName + "EditYangLi", JsonConvert.SerializeObject(_obj));
                ReturnModel<dynamic> _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson);
                if (_rtn.rtnCode > 0)
                {
                    string _strYbNo = _rtn.rtnData.outNo;
                    string _outMsg = _rtn.rtnData.outMsg;
                    string _outSum = _rtn.rtnData.outSum;
                    if (string.IsNullOrEmpty(_outSum)) _outSum = "-1";
                    if (int.Parse(_outSum) < 0)
                    {
                        Gs.DevApp.ToolBox.MsgHelper.ShowError(_outMsg);
                        gvMx1.SetRowCellValue(rowHandle, dtCol, "");
                    }
                    else
                    {
                        //如果不合格,存进去
                        string _outFstand = _rtn.rtnData.outFstand;
                        gvMx1.SetRowCellValue(rowHandle, dtCol + "jg", _outFstand);
                    }
                    //如果是样本数,要重新刷新
                    if (_strYbNo == "样本数")
                        getModel();
                }
                else
                    ToolBox.MsgHelper.Warning("提示:" + _rtn.rtnMsg);
            }
            catch (Exception ex)
            {
                ToolBox.MsgHelper.Warning("提示:" + ex.Message);
            }
        }
 
        private void GvMx1_ShowingEditor(object sender, System.ComponentModel.CancelEventArgs e)
        {
            DevExpress.XtraGrid.Views.Grid.GridView view = sender as DevExpress.XtraGrid.Views.Grid.GridView;
            string _maxYbs = (gvMx1.GetRowCellValue(view.FocusedRowHandle, "样本数").ToString());
            bool _bl = ckCol(view.FocusedColumn.FieldName, _maxYbs);
            if (!_bl)
                e.Cancel = true;
        }
 
        private void getModel()
        {
            gcMx1.DataSource = null;
            gvMx1.Columns.Clear();
            var _obj = new
            {
                dt01Guid = this.dt01Guid
            };
            try
            {
                string strJson = UtilityHelper.HttpPost("", _webServiceName + "GetYangLi", JsonConvert.SerializeObject(_obj));
                ReturnModel<DataTable> _rtn = ToolBox.UtilityHelper.ReturnToList(strJson);
                if (_rtn.rtnCode > 0)
                {
                    DataTable dt = _rtn.rtnData;
                    if (dt.Rows.Count > 0)
                    {
                        gcMx1.BindingContext = new BindingContext();
                        gcMx1.DataSource = dt;
                        gcMx1.ForceInitialize();
                        gvMx1.BestFitColumns();
                        // 隐藏不必要的列,同时把不合格的存进去
                        foreach (DataColumn col in dt.Columns)
                        {
                            if (col.ColumnName.Contains("jg"))
                            {
                                gvMx1.Columns[col.ColumnName].Visible = false;
                            }
                        }
                        gvMx1.Columns["guid"].Visible = false;
                        gvMx1.Columns["parentGuid"].Visible = false;
                    }
                    else
                    {
                        Gs.DevApp.ToolBox.UtilityHelper.SetDefaultTable(gcMx1, gvMx1);
                    }
                }
                else
                    ToolBox.MsgHelper.Warning("提示:" + _rtn.rtnMsg);
            }
            catch (Exception ex)
            {
                ToolBox.MsgHelper.Warning("提示:" + ex.Message);
            }
        }
    }
}