public void CheckRowValueLegal(int rowIndex, int colIndex)
        {
            string cn, address;

            List <string> checkList = (from DataGridViewRow dgvr in controllerDGV.Rows
                                       let s = dgvr.Cells[colIndex].Value as string
                                               where s != ""
                                               select s).ToList();

            cn      = GetCellValueAndChange(rowIndex, "Controller Name");
            address = GetCellValueAndChange(rowIndex, GetAddressName());

            illegalRowIndex    = -1;
            illegalColumnIndex = -1;

            if (colIndex == controllerDGV.Columns["Controller Name"].Index)
            {
                if (!CheckControllerName(cn, rowIndex, colIndex, checkList))
                {
                    return;
                }
            }
            else if (colIndex == controllerDGV.Columns[GetAddressName()].Index)
            {
                if (!CheckControllerAddress(address, rowIndex, colIndex, checkList))
                {
                    return;
                }
            }

            switch (editControllerType)
            {
            case EditType.Add:
                IODataCollection.AddController(selectControllerTypeName, cn, address);
                break;

            case EditType.UpdateName:
                IODataCollection.UpdateControllerName(selectControllerTypeName, oldStr, cn);
                break;

            case EditType.UpdateAddress:
                IODataCollection.UpdateControllerAddress(selectControllerTypeName, address, cn);
                break;

            default: break;
            }
        }
        private void InitializeControllerTable()
        {
            if (!hasStorageData)
            {
                ACSBaseConfig.dac = ACSBaseConfig.DefaultACSChoice.Simulator;
                IODataCollection.AddController("ACS", ACSBaseConfig.sim, "", ACSBaseConfig.dac == ACSBaseConfig.DefaultACSChoice.Simulator);
                IODataCollection.AddController("ACS", "Default", "10.0.0.100", ACSBaseConfig.dac == ACSBaseConfig.DefaultACSChoice.Default);
                IODataCollection.AddControllerTable("ACS", ACSBaseConfig.dac == ACSBaseConfig.DefaultACSChoice.Simulator, ACSBaseConfig.sim, "");
                IODataCollection.AddControllerTable("ACS", ACSBaseConfig.dac == ACSBaseConfig.DefaultACSChoice.Default, "Default", "10.0.0.100");
                IODataCollection.DuplicateControllerTable("ACS");
                IODataCollection.AddController("QPLC", ACSBaseConfig.sim, "");
                IODataCollection.AddControllerTable("QPLC", false, ACSBaseConfig.sim, "");
                IODataCollection.DuplicateControllerTable("QPLC");
                IODataCollection.DuplicateControllerTable("LS");
            }

            RetrieveSelectController();
        }