Пример #1
0
        //получить таблицу для текущего выбранного узла
        public virtual TableData_Server GetTableData(ApplicationContext db,
                                                     int nodeId)
        {
            if (NodeType == TreeViewNodeType.Checking ||
                NodeType == TreeViewNodeType.Setting)
            {
                return(GetTableDataForPluginParameters(nodeId));
            }
            if (ChildType == null)
            {
                return(null);
            }
            object ChildObject = Activator.CreateInstance(ChildType);

            if (ChildObject == null)
            {
                return(null);
            }
            DataProvider newChild = (DataProvider)ChildObject;

            newChild.SetPropertyForGetTableData(db, this);
            List <CellContainer> HeaderCellContainer = newChild.GetCellContainers();

            if (HeaderCellContainer == null || HeaderCellContainer.Count == 0)
            {
                return(null);
            }

            List <RowContainer> RowContainers = new List <RowContainer>();

            foreach (DataProvider Child in GetNodes())
            {
                Child.SetPropertyForGetTableData(db, this);
                List <CellContainer> ValueCellContainer = Child.GetCellContainers();
                if (ValueCellContainer == null &&
                    ValueCellContainer.Count == 0)
                {
                    return(null);
                }
                RowContainer RC = new RowContainer(Child.Id, ValueCellContainer);
                RowContainers.Add(RC);
            }
            string           TableName = TreeViewNodeInfos[NodeType].TableName;
            TableData_Server TDS       =
                new TableData_Server(nodeId,
                                     TableName,
                                     HeaderCellContainer,
                                     true,
                                     RowContainers);

            return(TDS);
        }
Пример #2
0
        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));
        }
Пример #3
0
        //модификация базы данных, если текущий узел - это Настройки или Проверки плагина
        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);
        }
Пример #4
0
        TableData_Server GetTableDataAsNotTableType(
            List <AddInsParameter> ParameterList,
            int nodeId,
            string TableName)
        {
            List <CellContainer> CellContainers = new List <CellContainer>();

            for (int i = 0; i < ParameterList.Count; i++)
            {
                CellContainer CC = GetCellContainer(ParameterList[i], i);
                CellContainers.Add(CC);
            }
            RowContainer RC = new RowContainer(0, CellContainers);

            return(new TableData_Server(nodeId,
                                        TableName,
                                        CellContainers,
                                        false,
                                        new List <RowContainer> {
                RC
            }));
        }
Пример #5
0
        //установить данные объекта для модификации БД
        public bool SetDataForModify(ApplicationContext db,
                                     RowContainer RC,
                                     DataProvider ParentNode)
        {
            int nSetVal = 0;

            RC.ValueCellContainer.ForEach(Cell =>
            {
                foreach (PropertyInfo PI in GetType().GetProperties())
                {
                    //перебор атрибутов (false - без родителей)
                    foreach (ColumnAttribute Column in
                             PI.GetCustomAttributes <ColumnAttribute>(false))
                    {
                        //поиск по имени атрибута
                        if (Column.headerPropName == Cell.CI.headerPropName)
                        {
                            //установить значение свойства
                            PI.SetValue(this, Cell.value);
                            nSetVal++;
                        }
                    }
                }
            });
            if (RC.ValueCellContainer.Count != nSetVal)
            {
                return(false);
            }

            //установить специфические данные для строки таблицы
            bool bSet = SetSecificDataForModify(db, ParentNode);

            if (!bSet)
            {
                return(false);
            }
            return(true);
        }