This commit is contained in:
@@ -15,6 +15,8 @@ namespace 材料热传导系数
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
public int row { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 条码(保留用于兼容性)
|
||||
/// </summary>
|
||||
@@ -266,15 +268,73 @@ standarderror)
|
||||
}
|
||||
}
|
||||
|
||||
public List<ScanData> GetScanDataBylldh_jh(string lldh, string jh)
|
||||
public List<ScanData> GetScanDataBylldh_jh(string jh)
|
||||
{
|
||||
using (var connection = new MySqlConnection(_connectionString))
|
||||
{
|
||||
connection.Open();
|
||||
var sql = @"SELECT * FROM scandata
|
||||
where lldh=@lldh and jh = @jh
|
||||
where jh = @jh
|
||||
ORDER BY id asc ";
|
||||
return connection.Query<ScanData>(sql, new { @lldh, jh }).ToList();
|
||||
return connection.Query<ScanData>(sql, new { jh }).ToList();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新扫描数据
|
||||
/// </summary>
|
||||
/// <param name="scanData">要更新的扫描数据</param>
|
||||
public void UpdateScanItem(ScanData scanData)
|
||||
{
|
||||
using (var connection = new MySqlConnection(_connectionString))
|
||||
{
|
||||
connection.Open();
|
||||
var sql = @"UPDATE scandata SET
|
||||
barcode = @barcode,
|
||||
diffpressure = @diffpressure,
|
||||
exit_temperature = @exit_temperature,
|
||||
temperature = @temperature,
|
||||
dwelltime = @dwelltime,
|
||||
TemperatureMode = @TemperatureMode,
|
||||
kzh = @kzh,
|
||||
lldh = @lldh,
|
||||
jh = @jh,
|
||||
quantity = @quantity,
|
||||
pressuresetting = @pressuresetting,
|
||||
standarderror = @standarderror
|
||||
WHERE id = @Id";
|
||||
|
||||
connection.Execute(sql, new
|
||||
{
|
||||
scanData.barcode,
|
||||
scanData.diffpressure,
|
||||
scanData.exit_temperature,
|
||||
scanData.temperature,
|
||||
scanData.dwelltime,
|
||||
scanData.TemperatureMode,
|
||||
scanData.kzh,
|
||||
scanData.lldh,
|
||||
scanData.jh,
|
||||
scanData.quantity,
|
||||
scanData.pressuresetting,
|
||||
scanData.standarderror,
|
||||
scanData.Id
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据ID获取扫描数据
|
||||
/// </summary>
|
||||
/// <param name="id">数据ID</param>
|
||||
/// <returns>扫描数据对象</returns>
|
||||
public ScanData GetScanDataById(int id)
|
||||
{
|
||||
using (var connection = new MySqlConnection(_connectionString))
|
||||
{
|
||||
connection.Open();
|
||||
var sql = @"SELECT * FROM scandata WHERE id = @id";
|
||||
return connection.QueryFirstOrDefault<ScanData>(sql, new { id });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -293,5 +353,53 @@ standarderror)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 根据ID获取测试数据
|
||||
/// </summary>
|
||||
public ConductivityTestData GetTestDataById(int id)
|
||||
{
|
||||
using (var connection = new MySqlConnection(_connectionString))
|
||||
{
|
||||
connection.Open();
|
||||
var sql = @"SELECT * FROM normaltemperature WHERE id = @id";
|
||||
return connection.QueryFirstOrDefault<ConductivityTestData>(sql, new { id });
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新测试数据
|
||||
/// </summary>
|
||||
public void UpdateTestData(ConductivityTestData testData)
|
||||
{
|
||||
using (var connection = new MySqlConnection(_connectionString))
|
||||
{
|
||||
connection.Open();
|
||||
var sql = @"UPDATE normaltemperature SET
|
||||
barcode = @barcode,
|
||||
temperature = @temperature,
|
||||
startpressure = @startpressure,
|
||||
dwelltime = @dwelltime,
|
||||
diffpressure = @diffpressure,
|
||||
endpressure = @endpressure,
|
||||
type = @type,
|
||||
kzh = @kzh,
|
||||
starttime = @starttime,
|
||||
endtime = @endtime,
|
||||
lldh = @lldh,
|
||||
jh = @jh,
|
||||
quantity = @quantity,
|
||||
standarderror = @standarderror,
|
||||
testresult = @testresult
|
||||
WHERE id = @Id";
|
||||
|
||||
connection.Execute(sql, testData);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@ namespace 全自动水压检测仪
|
||||
{
|
||||
int maxRetries = 3;
|
||||
int retryCount = 0;
|
||||
|
||||
|
||||
while (retryCount < maxRetries)
|
||||
{
|
||||
try
|
||||
@@ -106,7 +106,7 @@ namespace 全自动水压检测仪
|
||||
// 如果读取失败,默认写入true(开启状态)
|
||||
System.Diagnostics.Debug.WriteLine($"[Function] 读取地址{address}失败,使用默认值: {readEx.Message}");
|
||||
}
|
||||
|
||||
|
||||
// 写入相反的状态
|
||||
modbusMaster.WriteSingleCoil(1, address, !currentState);
|
||||
Thread.Sleep(100);
|
||||
@@ -122,7 +122,7 @@ namespace 全自动水压检测仪
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
// 操作成功,退出重试循环
|
||||
return;
|
||||
}
|
||||
@@ -130,13 +130,13 @@ namespace 全自动水压检测仪
|
||||
{
|
||||
retryCount++;
|
||||
System.Diagnostics.Debug.WriteLine($"[Function] Modbus从站异常 (尝试 {retryCount}/{maxRetries}): {slaveEx.Message}");
|
||||
|
||||
|
||||
if (retryCount >= maxRetries)
|
||||
{
|
||||
MessageBox.Show($"操作失败!\n\nModbus从站错误: {slaveEx.SlaveExceptionCode}\n{slaveEx.Message}", "错误");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// 等待后重试
|
||||
Thread.Sleep(200);
|
||||
}
|
||||
@@ -144,13 +144,13 @@ namespace 全自动水压检测仪
|
||||
{
|
||||
retryCount++;
|
||||
System.Diagnostics.Debug.WriteLine($"[Function] 操作失败 (尝试 {retryCount}/{maxRetries}): {ex.Message}");
|
||||
|
||||
|
||||
if (retryCount >= maxRetries)
|
||||
{
|
||||
MessageBox.Show("操作失败!" + "\n" + "\n" + ex.Message, "错误");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// 等待后重试
|
||||
Thread.Sleep(200);
|
||||
}
|
||||
@@ -190,7 +190,7 @@ namespace 全自动水压检测仪
|
||||
|
||||
}
|
||||
|
||||
public void WriteToPLCForNew(string inPutValue, ushort address, DataType dataType, bool isok=false,float max=0,float min=0)
|
||||
public void WriteToPLCForNew(string inPutValue, ushort address, DataType dataType, bool isok = false, float max = 0, float min = 0)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -202,7 +202,7 @@ namespace 全自动水压检测仪
|
||||
|
||||
if (UIInputDialog.ShowInputDoubleDialog(ref value, UIStyle.Inherited, desc: "请输入值", showMask: false))
|
||||
{
|
||||
if ( isok&&value > max || value < min)
|
||||
if (isok && value > max || value < min)
|
||||
{
|
||||
MessageBox.Show("数据不正确");
|
||||
return;
|
||||
@@ -212,9 +212,13 @@ namespace 全自动水压检测仪
|
||||
break;
|
||||
case DataType.整形:
|
||||
int value_int = inPutValue.ToInt();
|
||||
|
||||
if (UIInputDialog.ShowInputIntegerDialog(ref value_int, UIStyle.Inherited, desc: "请输入数据:"))
|
||||
{
|
||||
|
||||
if (isok)
|
||||
{
|
||||
value_int = value_int * 10;
|
||||
}
|
||||
modbusMaster.WriteMultipleRegisters(1, address, dc.intToushorts(value_int));
|
||||
//if (isok)
|
||||
//{ modbusMaster.WriteSingleCoil(1, 25, true); }
|
||||
|
||||
37
全自动水压检测仪/NormalTemperatureMode.Designer.cs
generated
37
全自动水压检测仪/NormalTemperatureMode.Designer.cs
generated
@@ -171,6 +171,8 @@ namespace 全自动水压检测仪
|
||||
this.uiPanel2 = new Sunny.UI.UIPanel();
|
||||
this.uiLabel1 = new Sunny.UI.UILabel();
|
||||
this.uiLight1 = new Sunny.UI.UILight();
|
||||
this.uiLabel26 = new Sunny.UI.UILabel();
|
||||
this.uiTextBox14 = new Sunny.UI.UITextBox();
|
||||
this.uiTableLayoutPanel1.SuspendLayout();
|
||||
this.uiPanel1.SuspendLayout();
|
||||
this.uiPanel4.SuspendLayout();
|
||||
@@ -1448,6 +1450,8 @@ namespace 全自动水压检测仪
|
||||
//
|
||||
// uiPanel14
|
||||
//
|
||||
this.uiPanel14.Controls.Add(this.uiLabel26);
|
||||
this.uiPanel14.Controls.Add(this.uiTextBox14);
|
||||
this.uiPanel14.Controls.Add(this.uiLabel25);
|
||||
this.uiPanel14.Controls.Add(this.uiTextBox13);
|
||||
this.uiPanel14.Controls.Add(this.uiLabel24);
|
||||
@@ -1630,6 +1634,7 @@ namespace 全自动水压检测仪
|
||||
this.uiLabel35.TabIndex = 2;
|
||||
this.uiLabel35.Text = "联络单号:";
|
||||
this.uiLabel35.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.uiLabel35.Visible = false;
|
||||
//
|
||||
// uiLabel49
|
||||
//
|
||||
@@ -1668,6 +1673,7 @@ namespace 全自动水压检测仪
|
||||
this.uiTextBox2.Size = new System.Drawing.Size(128, 28);
|
||||
this.uiTextBox2.TabIndex = 3;
|
||||
this.uiTextBox2.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
this.uiTextBox2.Visible = false;
|
||||
this.uiTextBox2.Watermark = "";
|
||||
//
|
||||
// uiTextBox10
|
||||
@@ -2376,6 +2382,35 @@ namespace 全自动水压检测仪
|
||||
this.uiLight1.TabIndex = 1;
|
||||
this.uiLight1.Text = "uiLight1";
|
||||
//
|
||||
// uiLabel26
|
||||
//
|
||||
this.uiLabel26.Font = new System.Drawing.Font("微软雅黑", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.uiLabel26.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
|
||||
this.uiLabel26.Location = new System.Drawing.Point(277, 135);
|
||||
this.uiLabel26.Name = "uiLabel26";
|
||||
this.uiLabel26.Size = new System.Drawing.Size(112, 30);
|
||||
this.uiLabel26.TabIndex = 25;
|
||||
this.uiLabel26.Text = "水循环时间设置:";
|
||||
this.uiLabel26.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// uiTextBox14
|
||||
//
|
||||
this.uiTextBox14.Cursor = System.Windows.Forms.Cursors.IBeam;
|
||||
this.uiTextBox14.Font = new System.Drawing.Font("微软雅黑", 10.5F);
|
||||
this.uiTextBox14.Location = new System.Drawing.Point(395, 134);
|
||||
this.uiTextBox14.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
|
||||
this.uiTextBox14.MinimumSize = new System.Drawing.Size(1, 16);
|
||||
this.uiTextBox14.Name = "uiTextBox14";
|
||||
this.uiTextBox14.Padding = new System.Windows.Forms.Padding(5);
|
||||
this.uiTextBox14.Radius = 3;
|
||||
this.uiTextBox14.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(220)))), ((int)(((byte)(220)))));
|
||||
this.uiTextBox14.ShowText = false;
|
||||
this.uiTextBox14.Size = new System.Drawing.Size(91, 28);
|
||||
this.uiTextBox14.TabIndex = 26;
|
||||
this.uiTextBox14.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
this.uiTextBox14.Watermark = "";
|
||||
this.uiTextBox14.Click += new System.EventHandler(this.uiTextBox14_Click);
|
||||
//
|
||||
// NormalTemperatureMode
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
@@ -2590,6 +2625,8 @@ namespace 全自动水压检测仪
|
||||
private Sunny.UI.UITextBox uiTextBox13;
|
||||
private Sunny.UI.UILabel uiLabel24;
|
||||
private Sunny.UI.UITextBox uiTextBox12;
|
||||
private Sunny.UI.UILabel uiLabel26;
|
||||
private Sunny.UI.UITextBox uiTextBox14;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -394,7 +394,7 @@ namespace 全自动水压检测仪
|
||||
if (currentValue > settingValue)
|
||||
{
|
||||
isValid = false;
|
||||
|
||||
|
||||
_modbusMaster.WriteSingleCoil(1, 10082, true);
|
||||
timer?.Stop();
|
||||
MessageBox.Show("实验已达到设置压差,自动停止!");
|
||||
@@ -450,7 +450,7 @@ namespace 全自动水压检测仪
|
||||
|
||||
Real13 = SafelyReadRegisters(1, 3484, 2),// 温度保护
|
||||
Real14 = SafelyReadRegisters(1, 3134, 2),// 压力保护
|
||||
|
||||
Real15 = SafelyReadRegisters(1, 2406, 1),// 时间
|
||||
CurrentTime = DateTime.Now
|
||||
};
|
||||
}
|
||||
@@ -617,6 +617,15 @@ namespace 全自动水压检测仪
|
||||
uiTextBox13.Text = propre.ToString("F1");
|
||||
}
|
||||
|
||||
|
||||
// 压力保护
|
||||
if (uiTextBox14 != null && !uiTextBox14.IsDisposed &&
|
||||
modbusData.Real15 != null && modbusData.Real15.Length >= 2)
|
||||
{
|
||||
var propre = modbusData.Real15[0];
|
||||
uiTextBox14.Text = (propre / 10).ToString("F1");
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception uiEx)
|
||||
{
|
||||
@@ -1040,7 +1049,7 @@ namespace 全自动水压检测仪
|
||||
}
|
||||
|
||||
string plcIp = "192.168.1.10";
|
||||
// string plcIp = "127.0.0.1";
|
||||
//string plcIp = "127.0.0.1";
|
||||
bool initSuccess = Data.ModbusResourceManager.Instance.Init(plcIp, 502);
|
||||
if (!initSuccess)
|
||||
{
|
||||
@@ -1611,14 +1620,14 @@ namespace 全自动水压检测仪
|
||||
itemNumber = uiTextBox10.Text.Trim();
|
||||
});
|
||||
|
||||
if (string.IsNullOrEmpty(contactNumber))
|
||||
{
|
||||
SafeInvoke(() =>
|
||||
{
|
||||
MessageBox.Show("请输入联络单号!");
|
||||
});
|
||||
return;
|
||||
}
|
||||
//if (string.IsNullOrEmpty(contactNumber))
|
||||
//{
|
||||
// SafeInvoke(() =>
|
||||
// {
|
||||
// MessageBox.Show("请输入联络单号!");
|
||||
// });
|
||||
// return;
|
||||
//}
|
||||
|
||||
if (string.IsNullOrEmpty(itemNumber))
|
||||
{
|
||||
@@ -1635,14 +1644,14 @@ namespace 全自动水压检测仪
|
||||
|
||||
|
||||
// 2. 从数据库查询数据
|
||||
ScanData scanData = GetScanDataByBarcode(lldh, jh);
|
||||
ScanData scanData = GetScanDataByBarcode(jh);
|
||||
|
||||
|
||||
if (scanData == null)
|
||||
{
|
||||
SafeInvoke(() =>
|
||||
{
|
||||
MessageBox.Show($"未找到联络单号 {contactNumber} 和件号 {itemNumber} 的记录!");
|
||||
MessageBox.Show($"未找到件号 {itemNumber} 的记录!");
|
||||
});
|
||||
return;
|
||||
}
|
||||
@@ -1676,17 +1685,17 @@ namespace 全自动水压检测仪
|
||||
|
||||
}
|
||||
|
||||
private ScanData GetScanDataByBarcode(string lldh, string jh)
|
||||
private ScanData GetScanDataByBarcode(string jh)
|
||||
{
|
||||
using (var connection = new MySqlConnection(_repository._connectionString))
|
||||
{
|
||||
connection.Open();
|
||||
var sql = @"SELECT * FROM scandata
|
||||
WHERE lldh = @lldh and jh = @jh
|
||||
WHERE jh = @jh
|
||||
ORDER BY CreateTime DESC
|
||||
LIMIT 1";
|
||||
|
||||
return connection.QueryFirstOrDefault<ScanData>(sql, new { lldh, jh });
|
||||
return connection.QueryFirstOrDefault<ScanData>(sql, new { jh });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1937,5 +1946,14 @@ namespace 全自动水压检测仪
|
||||
ma?.WriteToPLCForNew(uiTextBox13.Text.Trim(), 3134, Function.DataType.浮点型);
|
||||
});
|
||||
}
|
||||
|
||||
private void uiTextBox14_Click(object sender, EventArgs e)
|
||||
{
|
||||
SafeInvoke(() =>
|
||||
{
|
||||
|
||||
ma?.WriteToPLCForNew(uiTextBox14.Text.Trim(), 2406, Function.DataType.整形, isok: true);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -119,12 +119,38 @@ namespace 全自动水压检测仪
|
||||
{
|
||||
dataGridView.Columns.Clear();
|
||||
dataGridView.ScrollBars = ScrollBars.Both;
|
||||
|
||||
|
||||
// ============ 添加编辑按钮列(放在第一列) ============
|
||||
DataGridViewButtonColumn editColumn = new DataGridViewButtonColumn
|
||||
{
|
||||
Name = "EditColumn",
|
||||
HeaderText = "操作",
|
||||
Text = "保存",
|
||||
UseColumnTextForButtonValue = true,
|
||||
Width = 60,
|
||||
SortMode = DataGridViewColumnSortMode.NotSortable,
|
||||
DefaultCellStyle = { Alignment = DataGridViewContentAlignment.MiddleCenter }
|
||||
};
|
||||
dataGridView.Columns.Add(editColumn);
|
||||
|
||||
dataGridView.Columns.Add(new DataGridViewTextBoxColumn
|
||||
{
|
||||
Name = "Id",
|
||||
HeaderText = "编号",
|
||||
Width = 50,
|
||||
DataPropertyName = "Id", // 绑定到ConductivityTestData的Id属性
|
||||
DataPropertyName = "Id",
|
||||
SortMode = DataGridViewColumnSortMode.NotSortable,
|
||||
DefaultCellStyle = { Alignment = DataGridViewContentAlignment.MiddleCenter }
|
||||
});
|
||||
|
||||
|
||||
dataGridView.Columns.Add(new DataGridViewTextBoxColumn
|
||||
{
|
||||
Name = "Id",
|
||||
HeaderText = "序号",
|
||||
Width = 50,
|
||||
DataPropertyName = "row", // 绑定到ConductivityTestData的Id属性
|
||||
SortMode = DataGridViewColumnSortMode.NotSortable,
|
||||
DefaultCellStyle = { Alignment = DataGridViewContentAlignment.MiddleCenter }
|
||||
});
|
||||
@@ -469,21 +495,66 @@ namespace 全自动水压检测仪
|
||||
}
|
||||
}
|
||||
|
||||
//private void Report_Load(object sender, EventArgs e)
|
||||
//{
|
||||
// // 检查数据源
|
||||
// //if (CurrentReport == null || CurrentReport.Count == 0)
|
||||
// //{
|
||||
// // MessageBox.Show("没有测试数据可显示", "提示",
|
||||
// // MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
// // return;
|
||||
// //}
|
||||
|
||||
// try
|
||||
// {
|
||||
// dataGridView.CellFormatting += DataGridView_CellFormatting;
|
||||
|
||||
|
||||
|
||||
// var result = _repository.GetTestData();
|
||||
// if (result != null && result.Count > 0)
|
||||
// {
|
||||
// CurrentReport = result;
|
||||
// }
|
||||
// int i = 0;
|
||||
// CurrentReport.ForEach(x =>
|
||||
// {
|
||||
// i++;
|
||||
// x.Id = i;
|
||||
// });
|
||||
// dataGridView.DataSource = CurrentReport;
|
||||
|
||||
// // 刷新显示
|
||||
// dataGridView.Refresh();
|
||||
|
||||
// this.Text = $"测试数据报表(共{CurrentReport.Count}条记录)";
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// MessageBox.Show($"加载数据失败:{ex.Message}", "错误",
|
||||
// MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
// }
|
||||
//}
|
||||
private void Report_Load(object sender, EventArgs e)
|
||||
{
|
||||
// 检查数据源
|
||||
//if (CurrentReport == null || CurrentReport.Count == 0)
|
||||
//{
|
||||
// MessageBox.Show("没有测试数据可显示", "提示",
|
||||
// MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
// return;
|
||||
//}
|
||||
|
||||
try
|
||||
{
|
||||
dataGridView.CellFormatting += DataGridView_CellFormatting;
|
||||
|
||||
// ============ 启用DataGridView编辑功能 ============
|
||||
dataGridView.ReadOnly = false;
|
||||
dataGridView.AllowUserToAddRows = false;
|
||||
dataGridView.EditMode = DataGridViewEditMode.EditOnEnter;
|
||||
|
||||
// 确保除了Id列和编辑按钮列外都可编辑
|
||||
foreach (DataGridViewColumn column in dataGridView.Columns)
|
||||
{
|
||||
if (column.Name != "Id" && column.Name != "EditColumn")
|
||||
{
|
||||
column.ReadOnly = false;
|
||||
}
|
||||
}
|
||||
// ============ 结束设置 ============
|
||||
|
||||
var result = _repository.GetTestData();
|
||||
if (result != null && result.Count > 0)
|
||||
@@ -494,7 +565,7 @@ namespace 全自动水压检测仪
|
||||
CurrentReport.ForEach(x =>
|
||||
{
|
||||
i++;
|
||||
x.Id = i;
|
||||
x.row = i;
|
||||
});
|
||||
dataGridView.DataSource = CurrentReport;
|
||||
|
||||
@@ -502,6 +573,11 @@ namespace 全自动水压检测仪
|
||||
dataGridView.Refresh();
|
||||
|
||||
this.Text = $"测试数据报表(共{CurrentReport.Count}条记录)";
|
||||
|
||||
// ============ 添加编辑按钮点击事件 ============
|
||||
dataGridView.CellClick -= DataGridViewCellClickHandler; // 先移除避免重复
|
||||
dataGridView.CellClick += DataGridViewCellClickHandler;
|
||||
// ============ 结束添加 ============
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -510,8 +586,99 @@ namespace 全自动水压检测仪
|
||||
}
|
||||
}
|
||||
|
||||
// 编辑按钮点击事件处理
|
||||
private void DataGridViewCellClickHandler(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
// 确保点击的是编辑按钮列
|
||||
if (e.RowIndex >= 0 && e.ColumnIndex >= 0 &&
|
||||
dataGridView.Columns[e.ColumnIndex].Name == "EditColumn")
|
||||
{
|
||||
try
|
||||
{
|
||||
// 结束当前单元格的编辑
|
||||
dataGridView.EndEdit();
|
||||
|
||||
// 获取当前行的数据
|
||||
var row = dataGridView.Rows[e.RowIndex];
|
||||
|
||||
// 验证必要字段
|
||||
if (row.Cells["jh"].Value == null || string.IsNullOrEmpty(row.Cells["jh"].Value.ToString()))
|
||||
{
|
||||
MessageBox.Show("件号不能为空!", "验证错误",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
// 从数据库获取原始数据(通过Id)
|
||||
int id = Convert.ToInt32(row.Cells["Id"].Value);
|
||||
var originalData = _repository.GetTestDataById(id);
|
||||
|
||||
if (originalData == null)
|
||||
{
|
||||
MessageBox.Show("未找到对应的测试数据!", "错误",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
// 更新数据
|
||||
originalData.lldh = row.Cells["lldh"].Value?.ToString() ?? "";
|
||||
originalData.jh = row.Cells["jh"].Value?.ToString() ?? "";
|
||||
originalData.kzh = row.Cells["kzh"].Value?.ToString() ?? "";
|
||||
|
||||
// 数值类型(带验证)
|
||||
if (row.Cells["quantity"].Value != null && !string.IsNullOrEmpty(row.Cells["quantity"].Value.ToString()))
|
||||
originalData.quantity = Convert.ToInt32(row.Cells["quantity"].Value);
|
||||
|
||||
if (row.Cells["startpressure"].Value != null && !string.IsNullOrEmpty(row.Cells["startpressure"].Value.ToString()))
|
||||
originalData.startpressure = Convert.ToDouble(row.Cells["startpressure"].Value);
|
||||
|
||||
if (row.Cells["endpressure"].Value != null && !string.IsNullOrEmpty(row.Cells["endpressure"].Value.ToString()))
|
||||
originalData.endpressure = Convert.ToDouble(row.Cells["endpressure"].Value);
|
||||
|
||||
if (row.Cells["dwelltime"].Value != null && !string.IsNullOrEmpty(row.Cells["dwelltime"].Value.ToString()))
|
||||
originalData.dwelltime = Convert.ToDouble(row.Cells["dwelltime"].Value);
|
||||
|
||||
if (row.Cells["diffpressure"].Value != null && !string.IsNullOrEmpty(row.Cells["diffpressure"].Value.ToString()))
|
||||
originalData.diffpressure = Convert.ToDouble(row.Cells["diffpressure"].Value);
|
||||
|
||||
if (row.Cells["temperature"].Value != null && !string.IsNullOrEmpty(row.Cells["temperature"].Value.ToString()))
|
||||
originalData.temperature = Convert.ToDouble(row.Cells["temperature"].Value);
|
||||
|
||||
if (row.Cells["standarderror"].Value != null && !string.IsNullOrEmpty(row.Cells["standarderror"].Value.ToString()))
|
||||
originalData.standarderror = Convert.ToDecimal(row.Cells["standarderror"].Value);
|
||||
|
||||
originalData.testresult = row.Cells["testresult"].Value?.ToString() ?? "";
|
||||
|
||||
// 类型转换
|
||||
string typeValue = row.Cells["Type"].Value?.ToString() ?? "";
|
||||
if (typeValue == "常温")
|
||||
originalData.Type = 1;
|
||||
else if (typeValue == "高温")
|
||||
originalData.Type = 0;
|
||||
|
||||
// 保存到数据库
|
||||
_repository.UpdateTestData(originalData);
|
||||
|
||||
MessageBox.Show("修改已保存!", "成功",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
|
||||
// 刷新数据(可选)
|
||||
// var result = _repository.GetTestData();
|
||||
// CurrentReport = result;
|
||||
// dataGridView.DataSource = CurrentReport;
|
||||
}
|
||||
catch (FormatException)
|
||||
{
|
||||
MessageBox.Show("数值格式错误,请检查输入的数据!", "格式错误",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show($"保存失败:{ex.Message}", "错误",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 导出报表按钮点击事件
|
||||
/// </summary>
|
||||
@@ -940,6 +1107,7 @@ namespace 全自动水压检测仪
|
||||
{
|
||||
//base.OnFormClosing(e);
|
||||
dataGridView.CellFormatting -= DataGridView_CellFormatting;
|
||||
dataGridView.CellClick -= DataGridViewCellClickHandler; // 移除事件
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
3
全自动水压检测仪/ScanImport.Designer.cs
generated
3
全自动水压检测仪/ScanImport.Designer.cs
generated
@@ -196,6 +196,7 @@
|
||||
this.uiTextBox2.Style = Sunny.UI.UIStyle.Custom;
|
||||
this.uiTextBox2.TabIndex = 12;
|
||||
this.uiTextBox2.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.uiTextBox2.Visible = false;
|
||||
this.uiTextBox2.Watermark = "请输入联络单号";
|
||||
//
|
||||
// uiTextBox11
|
||||
@@ -259,6 +260,7 @@
|
||||
this.uiLabel50.TabIndex = 31;
|
||||
this.uiLabel50.Text = "联络单号:";
|
||||
this.uiLabel50.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.uiLabel50.Visible = false;
|
||||
//
|
||||
// uiLabel51
|
||||
//
|
||||
@@ -675,6 +677,7 @@
|
||||
this.ColumnContactNumber.MinimumWidth = 6;
|
||||
this.ColumnContactNumber.Name = "ColumnContactNumber";
|
||||
this.ColumnContactNumber.ReadOnly = true;
|
||||
this.ColumnContactNumber.Visible = false;
|
||||
this.ColumnContactNumber.Width = 150;
|
||||
//
|
||||
// ColumnItemNumber
|
||||
|
||||
@@ -89,11 +89,11 @@ namespace 全自动水压检测仪
|
||||
string itemNumber = uiTextBox11?.Text?.Trim() ?? "";
|
||||
string engravingNumber = uiTextBoxEngravingNumber?.Text?.Trim() ?? "";
|
||||
|
||||
if (string.IsNullOrEmpty(contactNumber))
|
||||
{
|
||||
MessageBox.Show("请输入联络单号!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
//if (string.IsNullOrEmpty(contactNumber))
|
||||
//{
|
||||
// MessageBox.Show("请输入联络单号!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
// return;
|
||||
//}
|
||||
|
||||
if (string.IsNullOrEmpty(itemNumber))
|
||||
{
|
||||
@@ -106,10 +106,10 @@ namespace 全自动水压检测仪
|
||||
|
||||
|
||||
|
||||
bool isAny = _repository.GetScanDataBylldh_jh(uiTextBox2.Text, uiTextBox11.Text).Any();
|
||||
bool isAny = _repository.GetScanDataBylldh_jh(uiTextBox11.Text).Any();
|
||||
if (isAny)
|
||||
{
|
||||
MessageBox.Show("联络单号-件号重复");
|
||||
MessageBox.Show("件号重复");
|
||||
return;
|
||||
}
|
||||
try
|
||||
@@ -189,46 +189,46 @@ namespace 全自动水压检测仪
|
||||
}
|
||||
});
|
||||
}
|
||||
private void LoadData()
|
||||
{
|
||||
try
|
||||
{
|
||||
// 将数据查询操作移到后台线程,避免UI卡顿
|
||||
System.Threading.Tasks.Task.Run(() =>
|
||||
{
|
||||
var data = _repository.GetScanData();
|
||||
//private void LoadData()
|
||||
//{
|
||||
// try
|
||||
// {
|
||||
// // 将数据查询操作移到后台线程,避免UI卡顿
|
||||
// System.Threading.Tasks.Task.Run(() =>
|
||||
// {
|
||||
// var data = _repository.GetScanData();
|
||||
|
||||
// 安全更新DataGridView
|
||||
SafeInvoke(() =>
|
||||
{
|
||||
// 避免重复绑定导致的异常
|
||||
if (uiDataGridView1 != null && !uiDataGridView1.IsDisposed)
|
||||
{
|
||||
// 先解绑再重新绑定
|
||||
uiDataGridView1.DataSource = new List<ScanData>();
|
||||
uiDataGridView1.DataSource = data;
|
||||
// // 安全更新DataGridView
|
||||
// SafeInvoke(() =>
|
||||
// {
|
||||
// // 避免重复绑定导致的异常
|
||||
// if (uiDataGridView1 != null && !uiDataGridView1.IsDisposed)
|
||||
// {
|
||||
// // 先解绑再重新绑定
|
||||
// uiDataGridView1.DataSource = new List<ScanData>();
|
||||
// uiDataGridView1.DataSource = data;
|
||||
|
||||
|
||||
if (uiDataGridView1.Columns.Contains("Column1"))
|
||||
{
|
||||
uiDataGridView1.Columns["Column1"].Visible = false;
|
||||
}
|
||||
// if (uiDataGridView1.Columns.Contains("Column1"))
|
||||
// {
|
||||
// uiDataGridView1.Columns["Column1"].Visible = false;
|
||||
// }
|
||||
|
||||
SetRowNumbers();
|
||||
uiDataGridView1.Refresh();
|
||||
// SetRowNumbers();
|
||||
// uiDataGridView1.Refresh();
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
SafeInvoke(() =>
|
||||
{
|
||||
MessageBox.Show($"加载数据失败:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
});
|
||||
}
|
||||
}
|
||||
// }
|
||||
// });
|
||||
// });
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// SafeInvoke(() =>
|
||||
// {
|
||||
// MessageBox.Show($"加载数据失败:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
// });
|
||||
// }
|
||||
//}
|
||||
|
||||
//private void SwitchWindow<T>(ref T windowInstance, Func<T> createFunc) where T : UIForm
|
||||
//{
|
||||
@@ -252,7 +252,134 @@ namespace 全自动水压检测仪
|
||||
// this.Hide();
|
||||
// windowInstance.Show();
|
||||
//}
|
||||
private void LoadData()
|
||||
{
|
||||
try
|
||||
{
|
||||
// 将数据查询操作移到后台线程,避免UI卡顿
|
||||
System.Threading.Tasks.Task.Run(() =>
|
||||
{
|
||||
var data = _repository.GetScanData();
|
||||
|
||||
// 安全更新DataGridView
|
||||
SafeInvoke(() =>
|
||||
{
|
||||
// 避免重复绑定导致的异常
|
||||
if (uiDataGridView1 != null && !uiDataGridView1.IsDisposed)
|
||||
{
|
||||
// ============ 启用编辑功能 ============
|
||||
// 关键设置:允许用户编辑
|
||||
uiDataGridView1.ReadOnly = false;
|
||||
uiDataGridView1.AllowUserToAddRows = false;
|
||||
uiDataGridView1.AllowUserToDeleteRows = false;
|
||||
uiDataGridView1.EditMode = DataGridViewEditMode.EditOnEnter; // 或 EditOnKeystrokeOrF2
|
||||
// ============ 结束设置 ============
|
||||
|
||||
// 先解绑再重新绑定
|
||||
uiDataGridView1.DataSource = new List<ScanData>();
|
||||
uiDataGridView1.DataSource = data;
|
||||
|
||||
// ============ 添加编辑按钮列 ============
|
||||
// 检查是否已存在编辑按钮列
|
||||
if (!uiDataGridView1.Columns.Contains("EditButton"))
|
||||
{
|
||||
DataGridViewButtonColumn editButtonColumn = new DataGridViewButtonColumn();
|
||||
editButtonColumn.Name = "EditButton";
|
||||
editButtonColumn.HeaderText = "保存修改";
|
||||
editButtonColumn.Text = "保存";
|
||||
editButtonColumn.UseColumnTextForButtonValue = true;
|
||||
editButtonColumn.Width = 80;
|
||||
|
||||
// 将按钮列添加到DataGridView中(放在第一列)
|
||||
uiDataGridView1.Columns.Add(editButtonColumn);
|
||||
uiDataGridView1.Columns["EditButton"].DisplayIndex = 0; // 放在第一列
|
||||
}
|
||||
|
||||
// ============ 设置各列属性,使数据可编辑 ============
|
||||
// 确保所有列都可编辑(除了Id列和按钮列)
|
||||
foreach (DataGridViewColumn column in uiDataGridView1.Columns)
|
||||
{
|
||||
if (column.Name != "Id" && column.Name != "EditButton")
|
||||
{
|
||||
column.ReadOnly = false;
|
||||
|
||||
// 特别设置数值列的编辑属性
|
||||
if (column.Name.Contains("pressure") ||
|
||||
column.Name.Contains("temperature") ||
|
||||
column.Name.Contains("dwelltime") ||
|
||||
column.Name.Contains("quantity") ||
|
||||
column.Name.Contains("standarderror"))
|
||||
{
|
||||
// 设置单元格为文本框,可以编辑数值
|
||||
if (column is DataGridViewTextBoxColumn textBoxColumn)
|
||||
{
|
||||
textBoxColumn.DefaultCellStyle.Format = "F2"; // 显示两位小数
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 隐藏ID列(如果需要)
|
||||
if (uiDataGridView1.Columns.Contains("Id"))
|
||||
{
|
||||
uiDataGridView1.Columns["Id"].Visible = false;
|
||||
}
|
||||
|
||||
// ============ 添加按钮点击事件处理 ============
|
||||
// 移除旧的事件处理程序(避免重复)
|
||||
uiDataGridView1.CellClick -= DataGridViewCellClickHandler;
|
||||
// 添加新的事件处理程序
|
||||
uiDataGridView1.CellClick += DataGridViewCellClickHandler;
|
||||
// ============ 结束添加 ============
|
||||
|
||||
SetRowNumbers();
|
||||
uiDataGridView1.Refresh();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
SafeInvoke(() =>
|
||||
{
|
||||
MessageBox.Show($"加载数据失败:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
});
|
||||
}
|
||||
}
|
||||
// 编辑按钮点击事件处理
|
||||
private void DataGridViewCellClickHandler(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
// 确保点击的是按钮列
|
||||
if (e.RowIndex >= 0 && e.ColumnIndex >= 0 &&
|
||||
uiDataGridView1.Columns[e.ColumnIndex].Name == "EditButton")
|
||||
{
|
||||
// 获取选中的行数据
|
||||
if (uiDataGridView1.Rows[e.RowIndex].DataBoundItem is ScanData scanData)
|
||||
{
|
||||
// 保存修改到数据库
|
||||
try
|
||||
{
|
||||
bool isAny = _repository.GetScanDataBylldh_jh(scanData.jh).Any();
|
||||
if (isAny)
|
||||
{
|
||||
MessageBox.Show("件号重复");
|
||||
return;
|
||||
}
|
||||
|
||||
_repository.UpdateScanItem(scanData);
|
||||
|
||||
MessageBox.Show("修改已保存!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
|
||||
// 刷新数据
|
||||
LoadData();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show($"保存失败:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SwitchWindow<T>(T windowInstance, Func<T> createFunc) where T : UIForm
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user