181 lines
7.2 KiB
C#
181 lines
7.2 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.ComponentModel;
|
|||
|
|
using System.Data;
|
|||
|
|
using System.Drawing;
|
|||
|
|
using System.IO;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Runtime.Serialization.Formatters.Binary;
|
|||
|
|
using System.Text;
|
|||
|
|
using System.Threading.Tasks;
|
|||
|
|
using System.Windows.Forms;
|
|||
|
|
|
|||
|
|
namespace CowainHmi.Alarm
|
|||
|
|
{
|
|||
|
|
public partial class FrmEditAlarmTable : Form
|
|||
|
|
{
|
|||
|
|
private string excelFileName;
|
|||
|
|
public FrmEditAlarmTable(string _excelFileName)
|
|||
|
|
{
|
|||
|
|
InitializeComponent();
|
|||
|
|
this.excelFileName = _excelFileName;
|
|||
|
|
}
|
|||
|
|
private BindingList<PLCInfoModel.PLCAlarmInfo> alarmModels=new BindingList<PLCInfoModel.PLCAlarmInfo>();
|
|||
|
|
private void FrmEditAlarmTable_Load(object sender, EventArgs e)
|
|||
|
|
{
|
|||
|
|
var excelDataTable = AlarmExcelHelper.ReadReleaseExcel(excelFileName,alarmModels);
|
|||
|
|
alarmModels= AlarmExcelHelper.GetDataList<PLCInfoModel.PLCAlarmInfo>(excelDataTable);
|
|||
|
|
dataGridView1.DataSource = alarmModels;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void button1_Click(object sender, EventArgs e)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
string selectAddress = "";
|
|||
|
|
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
|
|||
|
|
{
|
|||
|
|
if (e.RowIndex < 0)
|
|||
|
|
{
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
//selectAddress = GetCellValueByRowColumnIndex(dataGridView1, e.RowIndex, "地址");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public string GetCellValueByRowColumnIndex(DataGridView dataGridView, int rowIndex, string columnName)
|
|||
|
|
{
|
|||
|
|
// 确保行号和DataGridView的行数在有效范围内
|
|||
|
|
if (rowIndex < 0 || rowIndex >= dataGridView.Rows.Count)
|
|||
|
|
{
|
|||
|
|
throw new IndexOutOfRangeException("rowIndex is out of range.");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 查找具有指定列名的列
|
|||
|
|
DataGridViewColumn column = dataGridView.Columns.Cast<DataGridViewColumn>().FirstOrDefault(c => c.Name == columnName);
|
|||
|
|
|
|||
|
|
// 确保找到了列
|
|||
|
|
if (column == null)
|
|||
|
|
{
|
|||
|
|
throw new ArgumentException("Column with specified name not found.", nameof(columnName));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 获取单元格的值
|
|||
|
|
// 注意:这里使用rowIndex作为行索引,column.Index作为列索引
|
|||
|
|
// 因为DataGridViewCellCollection是基于列的索引来访问单元格的,而不是直接使用列名
|
|||
|
|
return dataGridView.Rows[rowIndex].Cells[column.Index].Value?.ToString() ?? string.Empty;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
if (e.RowIndex < 0)
|
|||
|
|
{
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
var address = GetCellValueByRowColumnIndex(dataGridView1, e.RowIndex, "地址");
|
|||
|
|
var rowInfo = alarmModels.Where(item => item.地址 == address).FirstOrDefault();
|
|||
|
|
if (rowInfo != null)
|
|||
|
|
{
|
|||
|
|
var previousList = AlarmExcelHelper.DeepCopyList<PLCInfoModel.PLCAlarmInfo>(alarmModels);
|
|||
|
|
string previousAddress = rowInfo.地址;
|
|||
|
|
FrmEditAlarmRecord frmEditAlarmRecord = new FrmEditAlarmRecord(rowInfo);
|
|||
|
|
frmEditAlarmRecord.ShowDialog();
|
|||
|
|
int count = previousList.Where(item => item.地址 != previousAddress && item.地址 == rowInfo.地址).Count();
|
|||
|
|
if (count > 0)
|
|||
|
|
{
|
|||
|
|
rowInfo.地址 = previousAddress;
|
|||
|
|
MessageBox.Show("PLC地址冲突,已回滚为以前的地址!");
|
|||
|
|
}
|
|||
|
|
dataGridView1.Refresh();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
MessageBox.Show(ex.Message);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void btnSave_Click(object sender, EventArgs e)
|
|||
|
|
{
|
|||
|
|
AlarmExcelHelper.SaveBindingListToExcel<PLCInfoModel.PLCAlarmInfo>(alarmModels, excelFileName);
|
|||
|
|
MessageBox.Show("保存成功");
|
|||
|
|
}
|
|||
|
|
public static int rowCount;
|
|||
|
|
private void button3_Click(object sender, EventArgs e)
|
|||
|
|
{
|
|||
|
|
//int rowCount = 1;
|
|||
|
|
AddRowCount addRowCount = new AddRowCount();
|
|||
|
|
addRowCount.ShowDialog();
|
|||
|
|
for (int i = 0; i < rowCount; i++)
|
|||
|
|
{
|
|||
|
|
PLCInfoModel.PLCAlarmInfo rowInfo = new PLCInfoModel.PLCAlarmInfo();
|
|||
|
|
rowInfo.地址=Guid.NewGuid().ToString().Substring(0,8);
|
|||
|
|
alarmModels.Add(rowInfo);
|
|||
|
|
}
|
|||
|
|
dataGridView1.Refresh();
|
|||
|
|
//PLCInfoModel.PLCAlarmInfo rowInfo = new PLCInfoModel.PLCAlarmInfo();
|
|||
|
|
//int count=alarmModels.Where(item => item.地址==rowInfo.地址).Count();
|
|||
|
|
//if (count>0)
|
|||
|
|
//{
|
|||
|
|
// MessageBox.Show("有新增加的行没有更改,请先修改!");
|
|||
|
|
// return;
|
|||
|
|
//}
|
|||
|
|
//alarmModels.Add(rowInfo);
|
|||
|
|
//var previousList = AlarmExcelHelper.DeepCopyList<PLCInfoModel.PLCAlarmInfo>(alarmModels);
|
|||
|
|
//string previousAddress = rowInfo.地址;
|
|||
|
|
//FrmEditAlarmRecord frmEditAlarmRecord = new FrmEditAlarmRecord(rowInfo);
|
|||
|
|
//frmEditAlarmRecord.ShowDialog();
|
|||
|
|
//count = previousList.Where(item => item.地址 != previousAddress && item.地址 == rowInfo.地址).Count();
|
|||
|
|
//if (count > 0)
|
|||
|
|
//{
|
|||
|
|
// rowInfo.地址 = previousAddress;
|
|||
|
|
// MessageBox.Show("PLC地址冲突,已回滚为以前的地址!");
|
|||
|
|
//}
|
|||
|
|
//dataGridView1.Refresh();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void button4_Click(object sender, EventArgs e)
|
|||
|
|
{
|
|||
|
|
if (dataGridView1.SelectedRows.Count > 0)
|
|||
|
|
{
|
|||
|
|
// 显示确认对话框
|
|||
|
|
var result = MessageBox.Show("确定要删除选中的行吗?", "确认删除", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
|
|||
|
|
|
|||
|
|
if (result != DialogResult.Yes)
|
|||
|
|
{
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
// 遍历所有选中行并删除
|
|||
|
|
foreach (DataGridViewRow row in dataGridView1.SelectedRows)
|
|||
|
|
{
|
|||
|
|
// 如果行不是新行(未保存的行),则删除
|
|||
|
|
if (!row.IsNewRow && row.Index>=0)
|
|||
|
|
{
|
|||
|
|
//dataGridView1.Rows.Remove(row);
|
|||
|
|
selectAddress = GetCellValueByRowColumnIndex(dataGridView1, row.Index, "地址");
|
|||
|
|
var deleteItem = alarmModels.Where(item => item.地址 == selectAddress).FirstOrDefault();
|
|||
|
|
alarmModels.Remove(deleteItem);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
dataGridView1.Refresh();
|
|||
|
|
MessageBox.Show("删除成功!");
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
MessageBox.Show("请选择要删除的行。");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void button2_Click(object sender, EventArgs e)
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < alarmModels.Count; i++)
|
|||
|
|
{
|
|||
|
|
alarmModels[i].代码 = (i + 1).ToString();
|
|||
|
|
}
|
|||
|
|
dataGridView1.Refresh();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|