This commit is contained in:
@@ -15,6 +15,8 @@ namespace 材料热传导系数
|
|||||||
{
|
{
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
public int row { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 条码(保留用于兼容性)
|
/// 条码(保留用于兼容性)
|
||||||
/// </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))
|
using (var connection = new MySqlConnection(_connectionString))
|
||||||
{
|
{
|
||||||
connection.Open();
|
connection.Open();
|
||||||
var sql = @"SELECT * FROM scandata
|
var sql = @"SELECT * FROM scandata
|
||||||
where lldh=@lldh and jh = @jh
|
where jh = @jh
|
||||||
ORDER BY id asc ";
|
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;
|
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 maxRetries = 3;
|
||||||
int retryCount = 0;
|
int retryCount = 0;
|
||||||
|
|
||||||
while (retryCount < maxRetries)
|
while (retryCount < maxRetries)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -106,7 +106,7 @@ namespace 全自动水压检测仪
|
|||||||
// 如果读取失败,默认写入true(开启状态)
|
// 如果读取失败,默认写入true(开启状态)
|
||||||
System.Diagnostics.Debug.WriteLine($"[Function] 读取地址{address}失败,使用默认值: {readEx.Message}");
|
System.Diagnostics.Debug.WriteLine($"[Function] 读取地址{address}失败,使用默认值: {readEx.Message}");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 写入相反的状态
|
// 写入相反的状态
|
||||||
modbusMaster.WriteSingleCoil(1, address, !currentState);
|
modbusMaster.WriteSingleCoil(1, address, !currentState);
|
||||||
Thread.Sleep(100);
|
Thread.Sleep(100);
|
||||||
@@ -122,7 +122,7 @@ namespace 全自动水压检测仪
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 操作成功,退出重试循环
|
// 操作成功,退出重试循环
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -130,13 +130,13 @@ namespace 全自动水压检测仪
|
|||||||
{
|
{
|
||||||
retryCount++;
|
retryCount++;
|
||||||
System.Diagnostics.Debug.WriteLine($"[Function] Modbus从站异常 (尝试 {retryCount}/{maxRetries}): {slaveEx.Message}");
|
System.Diagnostics.Debug.WriteLine($"[Function] Modbus从站异常 (尝试 {retryCount}/{maxRetries}): {slaveEx.Message}");
|
||||||
|
|
||||||
if (retryCount >= maxRetries)
|
if (retryCount >= maxRetries)
|
||||||
{
|
{
|
||||||
MessageBox.Show($"操作失败!\n\nModbus从站错误: {slaveEx.SlaveExceptionCode}\n{slaveEx.Message}", "错误");
|
MessageBox.Show($"操作失败!\n\nModbus从站错误: {slaveEx.SlaveExceptionCode}\n{slaveEx.Message}", "错误");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 等待后重试
|
// 等待后重试
|
||||||
Thread.Sleep(200);
|
Thread.Sleep(200);
|
||||||
}
|
}
|
||||||
@@ -144,13 +144,13 @@ namespace 全自动水压检测仪
|
|||||||
{
|
{
|
||||||
retryCount++;
|
retryCount++;
|
||||||
System.Diagnostics.Debug.WriteLine($"[Function] 操作失败 (尝试 {retryCount}/{maxRetries}): {ex.Message}");
|
System.Diagnostics.Debug.WriteLine($"[Function] 操作失败 (尝试 {retryCount}/{maxRetries}): {ex.Message}");
|
||||||
|
|
||||||
if (retryCount >= maxRetries)
|
if (retryCount >= maxRetries)
|
||||||
{
|
{
|
||||||
MessageBox.Show("操作失败!" + "\n" + "\n" + ex.Message, "错误");
|
MessageBox.Show("操作失败!" + "\n" + "\n" + ex.Message, "错误");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 等待后重试
|
// 等待后重试
|
||||||
Thread.Sleep(200);
|
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
|
try
|
||||||
{
|
{
|
||||||
@@ -202,7 +202,7 @@ namespace 全自动水压检测仪
|
|||||||
|
|
||||||
if (UIInputDialog.ShowInputDoubleDialog(ref value, UIStyle.Inherited, desc: "请输入值", showMask: false))
|
if (UIInputDialog.ShowInputDoubleDialog(ref value, UIStyle.Inherited, desc: "请输入值", showMask: false))
|
||||||
{
|
{
|
||||||
if ( isok&&value > max || value < min)
|
if (isok && value > max || value < min)
|
||||||
{
|
{
|
||||||
MessageBox.Show("数据不正确");
|
MessageBox.Show("数据不正确");
|
||||||
return;
|
return;
|
||||||
@@ -212,9 +212,13 @@ namespace 全自动水压检测仪
|
|||||||
break;
|
break;
|
||||||
case DataType.整形:
|
case DataType.整形:
|
||||||
int value_int = inPutValue.ToInt();
|
int value_int = inPutValue.ToInt();
|
||||||
|
|
||||||
if (UIInputDialog.ShowInputIntegerDialog(ref value_int, UIStyle.Inherited, desc: "请输入数据:"))
|
if (UIInputDialog.ShowInputIntegerDialog(ref value_int, UIStyle.Inherited, desc: "请输入数据:"))
|
||||||
{
|
{
|
||||||
|
if (isok)
|
||||||
|
{
|
||||||
|
value_int = value_int * 10;
|
||||||
|
}
|
||||||
modbusMaster.WriteMultipleRegisters(1, address, dc.intToushorts(value_int));
|
modbusMaster.WriteMultipleRegisters(1, address, dc.intToushorts(value_int));
|
||||||
//if (isok)
|
//if (isok)
|
||||||
//{ modbusMaster.WriteSingleCoil(1, 25, true); }
|
//{ 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.uiPanel2 = new Sunny.UI.UIPanel();
|
||||||
this.uiLabel1 = new Sunny.UI.UILabel();
|
this.uiLabel1 = new Sunny.UI.UILabel();
|
||||||
this.uiLight1 = new Sunny.UI.UILight();
|
this.uiLight1 = new Sunny.UI.UILight();
|
||||||
|
this.uiLabel26 = new Sunny.UI.UILabel();
|
||||||
|
this.uiTextBox14 = new Sunny.UI.UITextBox();
|
||||||
this.uiTableLayoutPanel1.SuspendLayout();
|
this.uiTableLayoutPanel1.SuspendLayout();
|
||||||
this.uiPanel1.SuspendLayout();
|
this.uiPanel1.SuspendLayout();
|
||||||
this.uiPanel4.SuspendLayout();
|
this.uiPanel4.SuspendLayout();
|
||||||
@@ -1448,6 +1450,8 @@ namespace 全自动水压检测仪
|
|||||||
//
|
//
|
||||||
// uiPanel14
|
// uiPanel14
|
||||||
//
|
//
|
||||||
|
this.uiPanel14.Controls.Add(this.uiLabel26);
|
||||||
|
this.uiPanel14.Controls.Add(this.uiTextBox14);
|
||||||
this.uiPanel14.Controls.Add(this.uiLabel25);
|
this.uiPanel14.Controls.Add(this.uiLabel25);
|
||||||
this.uiPanel14.Controls.Add(this.uiTextBox13);
|
this.uiPanel14.Controls.Add(this.uiTextBox13);
|
||||||
this.uiPanel14.Controls.Add(this.uiLabel24);
|
this.uiPanel14.Controls.Add(this.uiLabel24);
|
||||||
@@ -1630,6 +1634,7 @@ namespace 全自动水压检测仪
|
|||||||
this.uiLabel35.TabIndex = 2;
|
this.uiLabel35.TabIndex = 2;
|
||||||
this.uiLabel35.Text = "联络单号:";
|
this.uiLabel35.Text = "联络单号:";
|
||||||
this.uiLabel35.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
this.uiLabel35.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||||
|
this.uiLabel35.Visible = false;
|
||||||
//
|
//
|
||||||
// uiLabel49
|
// uiLabel49
|
||||||
//
|
//
|
||||||
@@ -1668,6 +1673,7 @@ namespace 全自动水压检测仪
|
|||||||
this.uiTextBox2.Size = new System.Drawing.Size(128, 28);
|
this.uiTextBox2.Size = new System.Drawing.Size(128, 28);
|
||||||
this.uiTextBox2.TabIndex = 3;
|
this.uiTextBox2.TabIndex = 3;
|
||||||
this.uiTextBox2.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
|
this.uiTextBox2.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
|
||||||
|
this.uiTextBox2.Visible = false;
|
||||||
this.uiTextBox2.Watermark = "";
|
this.uiTextBox2.Watermark = "";
|
||||||
//
|
//
|
||||||
// uiTextBox10
|
// uiTextBox10
|
||||||
@@ -2376,6 +2382,35 @@ namespace 全自动水压检测仪
|
|||||||
this.uiLight1.TabIndex = 1;
|
this.uiLight1.TabIndex = 1;
|
||||||
this.uiLight1.Text = "uiLight1";
|
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
|
// NormalTemperatureMode
|
||||||
//
|
//
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||||
@@ -2590,6 +2625,8 @@ namespace 全自动水压检测仪
|
|||||||
private Sunny.UI.UITextBox uiTextBox13;
|
private Sunny.UI.UITextBox uiTextBox13;
|
||||||
private Sunny.UI.UILabel uiLabel24;
|
private Sunny.UI.UILabel uiLabel24;
|
||||||
private Sunny.UI.UITextBox uiTextBox12;
|
private Sunny.UI.UITextBox uiTextBox12;
|
||||||
|
private Sunny.UI.UILabel uiLabel26;
|
||||||
|
private Sunny.UI.UITextBox uiTextBox14;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -394,7 +394,7 @@ namespace 全自动水压检测仪
|
|||||||
if (currentValue > settingValue)
|
if (currentValue > settingValue)
|
||||||
{
|
{
|
||||||
isValid = false;
|
isValid = false;
|
||||||
|
|
||||||
_modbusMaster.WriteSingleCoil(1, 10082, true);
|
_modbusMaster.WriteSingleCoil(1, 10082, true);
|
||||||
timer?.Stop();
|
timer?.Stop();
|
||||||
MessageBox.Show("实验已达到设置压差,自动停止!");
|
MessageBox.Show("实验已达到设置压差,自动停止!");
|
||||||
@@ -450,7 +450,7 @@ namespace 全自动水压检测仪
|
|||||||
|
|
||||||
Real13 = SafelyReadRegisters(1, 3484, 2),// 温度保护
|
Real13 = SafelyReadRegisters(1, 3484, 2),// 温度保护
|
||||||
Real14 = SafelyReadRegisters(1, 3134, 2),// 压力保护
|
Real14 = SafelyReadRegisters(1, 3134, 2),// 压力保护
|
||||||
|
Real15 = SafelyReadRegisters(1, 2406, 1),// 时间
|
||||||
CurrentTime = DateTime.Now
|
CurrentTime = DateTime.Now
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -617,6 +617,15 @@ namespace 全自动水压检测仪
|
|||||||
uiTextBox13.Text = propre.ToString("F1");
|
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)
|
catch (Exception uiEx)
|
||||||
{
|
{
|
||||||
@@ -1040,7 +1049,7 @@ namespace 全自动水压检测仪
|
|||||||
}
|
}
|
||||||
|
|
||||||
string plcIp = "192.168.1.10";
|
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);
|
bool initSuccess = Data.ModbusResourceManager.Instance.Init(plcIp, 502);
|
||||||
if (!initSuccess)
|
if (!initSuccess)
|
||||||
{
|
{
|
||||||
@@ -1611,14 +1620,14 @@ namespace 全自动水压检测仪
|
|||||||
itemNumber = uiTextBox10.Text.Trim();
|
itemNumber = uiTextBox10.Text.Trim();
|
||||||
});
|
});
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(contactNumber))
|
//if (string.IsNullOrEmpty(contactNumber))
|
||||||
{
|
//{
|
||||||
SafeInvoke(() =>
|
// SafeInvoke(() =>
|
||||||
{
|
// {
|
||||||
MessageBox.Show("请输入联络单号!");
|
// MessageBox.Show("请输入联络单号!");
|
||||||
});
|
// });
|
||||||
return;
|
// return;
|
||||||
}
|
//}
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(itemNumber))
|
if (string.IsNullOrEmpty(itemNumber))
|
||||||
{
|
{
|
||||||
@@ -1635,14 +1644,14 @@ namespace 全自动水压检测仪
|
|||||||
|
|
||||||
|
|
||||||
// 2. 从数据库查询数据
|
// 2. 从数据库查询数据
|
||||||
ScanData scanData = GetScanDataByBarcode(lldh, jh);
|
ScanData scanData = GetScanDataByBarcode(jh);
|
||||||
|
|
||||||
|
|
||||||
if (scanData == null)
|
if (scanData == null)
|
||||||
{
|
{
|
||||||
SafeInvoke(() =>
|
SafeInvoke(() =>
|
||||||
{
|
{
|
||||||
MessageBox.Show($"未找到联络单号 {contactNumber} 和件号 {itemNumber} 的记录!");
|
MessageBox.Show($"未找到件号 {itemNumber} 的记录!");
|
||||||
});
|
});
|
||||||
return;
|
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))
|
using (var connection = new MySqlConnection(_repository._connectionString))
|
||||||
{
|
{
|
||||||
connection.Open();
|
connection.Open();
|
||||||
var sql = @"SELECT * FROM scandata
|
var sql = @"SELECT * FROM scandata
|
||||||
WHERE lldh = @lldh and jh = @jh
|
WHERE jh = @jh
|
||||||
ORDER BY CreateTime DESC
|
ORDER BY CreateTime DESC
|
||||||
LIMIT 1";
|
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.浮点型);
|
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.Columns.Clear();
|
||||||
dataGridView.ScrollBars = ScrollBars.Both;
|
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
|
dataGridView.Columns.Add(new DataGridViewTextBoxColumn
|
||||||
{
|
{
|
||||||
Name = "Id",
|
Name = "Id",
|
||||||
HeaderText = "编号",
|
HeaderText = "编号",
|
||||||
Width = 50,
|
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,
|
SortMode = DataGridViewColumnSortMode.NotSortable,
|
||||||
DefaultCellStyle = { Alignment = DataGridViewContentAlignment.MiddleCenter }
|
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)
|
private void Report_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
// 检查数据源
|
|
||||||
//if (CurrentReport == null || CurrentReport.Count == 0)
|
|
||||||
//{
|
|
||||||
// MessageBox.Show("没有测试数据可显示", "提示",
|
|
||||||
// MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
||||||
// return;
|
|
||||||
//}
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
dataGridView.CellFormatting += DataGridView_CellFormatting;
|
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();
|
var result = _repository.GetTestData();
|
||||||
if (result != null && result.Count > 0)
|
if (result != null && result.Count > 0)
|
||||||
@@ -494,7 +565,7 @@ namespace 全自动水压检测仪
|
|||||||
CurrentReport.ForEach(x =>
|
CurrentReport.ForEach(x =>
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
x.Id = i;
|
x.row = i;
|
||||||
});
|
});
|
||||||
dataGridView.DataSource = CurrentReport;
|
dataGridView.DataSource = CurrentReport;
|
||||||
|
|
||||||
@@ -502,6 +573,11 @@ namespace 全自动水压检测仪
|
|||||||
dataGridView.Refresh();
|
dataGridView.Refresh();
|
||||||
|
|
||||||
this.Text = $"测试数据报表(共{CurrentReport.Count}条记录)";
|
this.Text = $"测试数据报表(共{CurrentReport.Count}条记录)";
|
||||||
|
|
||||||
|
// ============ 添加编辑按钮点击事件 ============
|
||||||
|
dataGridView.CellClick -= DataGridViewCellClickHandler; // 先移除避免重复
|
||||||
|
dataGridView.CellClick += DataGridViewCellClickHandler;
|
||||||
|
// ============ 结束添加 ============
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
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>
|
||||||
/// 导出报表按钮点击事件
|
/// 导出报表按钮点击事件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -940,6 +1107,7 @@ namespace 全自动水压检测仪
|
|||||||
{
|
{
|
||||||
//base.OnFormClosing(e);
|
//base.OnFormClosing(e);
|
||||||
dataGridView.CellFormatting -= DataGridView_CellFormatting;
|
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.Style = Sunny.UI.UIStyle.Custom;
|
||||||
this.uiTextBox2.TabIndex = 12;
|
this.uiTextBox2.TabIndex = 12;
|
||||||
this.uiTextBox2.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
|
this.uiTextBox2.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
|
||||||
|
this.uiTextBox2.Visible = false;
|
||||||
this.uiTextBox2.Watermark = "请输入联络单号";
|
this.uiTextBox2.Watermark = "请输入联络单号";
|
||||||
//
|
//
|
||||||
// uiTextBox11
|
// uiTextBox11
|
||||||
@@ -259,6 +260,7 @@
|
|||||||
this.uiLabel50.TabIndex = 31;
|
this.uiLabel50.TabIndex = 31;
|
||||||
this.uiLabel50.Text = "联络单号:";
|
this.uiLabel50.Text = "联络单号:";
|
||||||
this.uiLabel50.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
this.uiLabel50.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||||
|
this.uiLabel50.Visible = false;
|
||||||
//
|
//
|
||||||
// uiLabel51
|
// uiLabel51
|
||||||
//
|
//
|
||||||
@@ -675,6 +677,7 @@
|
|||||||
this.ColumnContactNumber.MinimumWidth = 6;
|
this.ColumnContactNumber.MinimumWidth = 6;
|
||||||
this.ColumnContactNumber.Name = "ColumnContactNumber";
|
this.ColumnContactNumber.Name = "ColumnContactNumber";
|
||||||
this.ColumnContactNumber.ReadOnly = true;
|
this.ColumnContactNumber.ReadOnly = true;
|
||||||
|
this.ColumnContactNumber.Visible = false;
|
||||||
this.ColumnContactNumber.Width = 150;
|
this.ColumnContactNumber.Width = 150;
|
||||||
//
|
//
|
||||||
// ColumnItemNumber
|
// ColumnItemNumber
|
||||||
|
|||||||
@@ -89,11 +89,11 @@ namespace 全自动水压检测仪
|
|||||||
string itemNumber = uiTextBox11?.Text?.Trim() ?? "";
|
string itemNumber = uiTextBox11?.Text?.Trim() ?? "";
|
||||||
string engravingNumber = uiTextBoxEngravingNumber?.Text?.Trim() ?? "";
|
string engravingNumber = uiTextBoxEngravingNumber?.Text?.Trim() ?? "";
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(contactNumber))
|
//if (string.IsNullOrEmpty(contactNumber))
|
||||||
{
|
//{
|
||||||
MessageBox.Show("请输入联络单号!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
// MessageBox.Show("请输入联络单号!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||||
return;
|
// return;
|
||||||
}
|
//}
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(itemNumber))
|
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)
|
if (isAny)
|
||||||
{
|
{
|
||||||
MessageBox.Show("联络单号-件号重复");
|
MessageBox.Show("件号重复");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try
|
try
|
||||||
@@ -189,46 +189,46 @@ namespace 全自动水压检测仪
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
private void LoadData()
|
//private void LoadData()
|
||||||
{
|
//{
|
||||||
try
|
// try
|
||||||
{
|
// {
|
||||||
// 将数据查询操作移到后台线程,避免UI卡顿
|
// // 将数据查询操作移到后台线程,避免UI卡顿
|
||||||
System.Threading.Tasks.Task.Run(() =>
|
// System.Threading.Tasks.Task.Run(() =>
|
||||||
{
|
// {
|
||||||
var data = _repository.GetScanData();
|
// var data = _repository.GetScanData();
|
||||||
|
|
||||||
// 安全更新DataGridView
|
// // 安全更新DataGridView
|
||||||
SafeInvoke(() =>
|
// SafeInvoke(() =>
|
||||||
{
|
// {
|
||||||
// 避免重复绑定导致的异常
|
// // 避免重复绑定导致的异常
|
||||||
if (uiDataGridView1 != null && !uiDataGridView1.IsDisposed)
|
// if (uiDataGridView1 != null && !uiDataGridView1.IsDisposed)
|
||||||
{
|
// {
|
||||||
// 先解绑再重新绑定
|
// // 先解绑再重新绑定
|
||||||
uiDataGridView1.DataSource = new List<ScanData>();
|
// uiDataGridView1.DataSource = new List<ScanData>();
|
||||||
uiDataGridView1.DataSource = data;
|
// uiDataGridView1.DataSource = data;
|
||||||
|
|
||||||
|
|
||||||
if (uiDataGridView1.Columns.Contains("Column1"))
|
// if (uiDataGridView1.Columns.Contains("Column1"))
|
||||||
{
|
// {
|
||||||
uiDataGridView1.Columns["Column1"].Visible = false;
|
// uiDataGridView1.Columns["Column1"].Visible = false;
|
||||||
}
|
// }
|
||||||
|
|
||||||
SetRowNumbers();
|
// SetRowNumbers();
|
||||||
uiDataGridView1.Refresh();
|
// uiDataGridView1.Refresh();
|
||||||
|
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
catch (Exception ex)
|
// catch (Exception ex)
|
||||||
{
|
// {
|
||||||
SafeInvoke(() =>
|
// SafeInvoke(() =>
|
||||||
{
|
// {
|
||||||
MessageBox.Show($"加载数据失败:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
// MessageBox.Show($"加载数据失败:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
//private void SwitchWindow<T>(ref T windowInstance, Func<T> createFunc) where T : UIForm
|
//private void SwitchWindow<T>(ref T windowInstance, Func<T> createFunc) where T : UIForm
|
||||||
//{
|
//{
|
||||||
@@ -252,7 +252,134 @@ namespace 全自动水压检测仪
|
|||||||
// this.Hide();
|
// this.Hide();
|
||||||
// windowInstance.Show();
|
// 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
|
private void SwitchWindow<T>(T windowInstance, Func<T> createFunc) where T : UIForm
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user