TableData_Server GetTableDataAsTableType( List <AddInsParameter> ParameterList, int nodeId, string TableName) { ParameterList = ParameterList.OrderBy(q => q.RowIndex).ToList(); int oldRowIndex = ParameterList[0].RowIndex; List <CellContainer> CellContainers = new List <CellContainer>(); List <RowContainer> RowContainers = new List <RowContainer>(); for (int i = 0; i < ParameterList.Count; i++) { AddInsParameter Parameter = ParameterList[i]; int newRowIndex = Parameter.RowIndex; CellContainer CC = GetCellContainer(ParameterList[i], Parameter.ColumnIndex); if (oldRowIndex == newRowIndex) { CellContainers.Add(CC); } if (oldRowIndex != newRowIndex || i == ParameterList.Count - 1) { RowContainer RC = new RowContainer(0, CellContainers); RowContainers.Add(RC); if (i != ParameterList.Count - 1) { CellContainers = new List <CellContainer>(); CellContainers.Add(CC); } } oldRowIndex = newRowIndex; } //проверка, что во всех строках равное число столбцов int CellCount = RowContainers[0].ValueCellContainer.Count(); bool CellCountValid = RowContainers.Any(q => q.ValueCellContainer.Count != CellCount); if (CellCountValid) { return(null); } return(new TableData_Server(nodeId, TableName, RowContainers[0].ValueCellContainer, true, RowContainers)); }
CellContainer GetCellContainer(AddInsParameter Parameter, int columnIndex) { ControlType CDT = Parameter.ControlType; List <string> comboboxData = null; if (CDT == ControlType.ComboBox) { comboboxData = Parameter.AvailableValue.ToList(); } CellInfo CI = new CellInfo(Parameter.VisibleName, Parameter.PropertyName, CDT, columnIndex, comboboxData); return(new CellContainer(Parameter.Value, CI)); }
//модификация базы данных, если текущий узел - это Настройки или Проверки плагина public virtual bool ModifyForPluginParameters(ApplicationContext db, TableData_Server newTD) { DB_Plugin Plugin = (DB_Plugin)ParentNode; List <AddInsParameter> AddInsParameters = new List <AddInsParameter>(); List <RowContainer> RowContainers = newTD.RowContainers; for (int i = 0; i < RowContainers.Count; i++) { RowContainer RC = RowContainers[i]; foreach (CellContainer CC in RC.ValueCellContainer) { AddInsParameter Parameter = new AddInsParameter(); Parameter.TableName = newTD.tableName; Parameter.InTable = newTD.bAddNewRow; Parameter.RowIndex = i; Parameter.Value = CC.value; Parameter.VisibleName = CC.CI.headerName; Parameter.PropertyName = CC.CI.headerPropName; Parameter.ErrorMessage = ""; Parameter.ColumnIndex = CC.CI.columnIndex; Parameter.ControlType = CC.CI.ColumnType; Parameter.AvailableValue = CC.CI.comboboxData.ToArray(); AddInsParameters.Add(Parameter); } } string SerializeValue = JsonConvert.SerializeObject(AddInsParameters); if (SerializeValue == null || SerializeValue == "") { return(false); } if (NodeType == TreeViewNodeType.Checking) { Plugin.CheckingData = SerializeValue; } if (NodeType == TreeViewNodeType.Setting) { Plugin.SettingData = SerializeValue; } return(true); }