private void GetUpdatedData() { // 标记为删除的就不需要添加的修改或者添加的分中心中了 List <int> listEditRows = new List <int>(); foreach (int item in base.m_listEditedRows) { if (!m_listMaskedDeletedRows.Contains(item)) { listEditRows.Add(item); } } // 将去重后的项赋给编辑项 base.m_listEditedRows = listEditRows; // 获取修改了的数据 foreach (var item in base.m_listEditedRows) { var port = new CEntitySerialPort(); port.PortNumber = Int32.Parse(base.Rows[item].Cells[CS_PortNumber].Value.ToString()); port.TransType = CEnumHelper.UIStrToTransType(base.Rows[item].Cells[CS_TransType].Value.ToString()); port.Baudrate = Int32.Parse(base.Rows[item].Cells[CS_Baudrate].Value.ToString()); port.DataBit = Int32.Parse(base.Rows[item].Cells[CS_DataBit].Value.ToString()); port.StopBit = Int32.Parse(base.Rows[item].Cells[CS_StopBit].Value.ToString()); port.ParityType = CEnumHelper.UIStrToParityType(base.Rows[item].Cells[CS_ParityType].Value.ToString()); port.Stream = CEnumHelper.UIStrToSerialPortStreamType(base.Rows[item].Cells[CS_Stream].Value.ToString()); port.Break = base.Rows[item].Cells[CS_Break].Value.ToString() == CS_Break_Enabled ? true : false; port.SwitchSatus = base.Rows[item].Cells[CS_Open].Value.ToString() == CS_SwitchStatus_Open ? true : false; int prePortNumber = Int32.Parse(base.Rows[item].Cells[CS_PrePortNumber].Value.ToString()); string tag = base.Rows[item].Cells[CS_PID].Value.ToString(); if (tag == "-1") { // 新增的记录 m_listAddedPort.Add(port); } else { // 修改的记录,判断如果串口号不一致,则变成删除以前的串口,添加一个新串口 if (port.PortNumber == prePortNumber) { m_listUpdatedPorts.Add(port); } else { // 新增一个记录,删除一个记录 m_listAddedPort.Add(port); m_listDeletedPorts.Add(prePortNumber); } } } m_listEditedRows.Clear(); }