コード例 #1
0
        //перевод данных в формат, удобный на клиенте
        public TableData_Client TransformToClient()
        {
            List <ColumnData> CDs = new List <ColumnData>();

            HeaderCellContainer =
                HeaderCellContainer.OrderBy(q => q.CI.columnIndex).ToList();
            for (int i = 0; i < HeaderCellContainer.Count; i++)
            {
                IEnumerable <CellContainer> ValueContainers =
                    RowContainers.Select(q => q.ValueCellContainer[i]);
                IEnumerable <string> values =
                    ValueContainers.Select(q => q.value);
                List <TableDataCellValue> rowVals =
                    values.Select(q => new TableDataCellValue(q)).ToList();
                CellContainer HeaderContainer = HeaderCellContainer[i];
                ColumnData    CD = new ColumnData(
                    (int)HeaderContainer.CI.ColumnType,
                    HeaderContainer.CI.headerName,
                    HeaderContainer.CI.headerPropName,
                    HeaderContainer.value,
                    rowVals,
                    HeaderContainer.CI.comboboxData);
                CDs.Add(CD);
            }
            List <int>       rowIds = RowContainers.Select(q => q.Id).ToList();
            TableData_Client TDC    =
                new TableData_Client(nodeId, tableName, bAddNewRow, CDs, rowIds);

            return(TDC);
        }
コード例 #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 List <CellContainer> GetCellContainers()
        {
            List <CellContainer> CellContainers = new List <CellContainer>();
            //словарь для выпадающего списка
            var DictCombobox = new Dictionary <string, List <string> >();

            foreach (PropertyInfo PI in GetType().GetProperties())
            {
                object oVal = PI.GetValue(this);
                //перебор атрибутов (false - без родителей)
                //заполнение колекций выпадающий списков
                foreach (ColumnComboboxDataAttribute ColumnCombobox in
                         PI.GetCustomAttributes <ColumnComboboxDataAttribute>(false))
                {
                    if (oVal == null)
                    {
                        return(null);
                    }
                    List <string> ComboboxVals = (List <string>)oVal;
                    if (ComboboxVals.Count == 0)
                    {
                        return(null);
                    }
                    string headerPropName = ColumnCombobox.headerPropName;
                    if (DictCombobox.ContainsKey(headerPropName))
                    {
                        continue;
                    }
                    DictCombobox.Add(headerPropName, ComboboxVals);
                }
            }
            foreach (PropertyInfo PI in GetType().GetProperties())
            {
                object oVal = PI.GetValue(this);
                //перебор атрибутов (false - без родителей)
                //заполнение коллекции заголовков ячеек таблицы (HeaderCellContainer)
                foreach (ColumnAttribute Column in
                         PI.GetCustomAttributes <ColumnAttribute>(false))
                {
                    CellContainer CC = GetCellContainer(Column, oVal, DictCombobox);
                    CellContainers.Add(CC);
                }
            }
            return(CellContainers.OrderBy(q => q.CI.columnIndex).ToList());
        }
コード例 #4
0
        //перевод данных в формат, удобный на сервере
        public TableData_Server TransformToServer()
        {
            List <CellContainer> HeaderCellContainer =
                new List <CellContainer>();

            for (int i = 0; i < columnData.Count; i++)
            {
                ColumnData CD = columnData[i];
                CellInfo   CI = new CellInfo(CD.headerName,
                                             CD.headerPropName,
                                             (ControlType)CD.type,
                                             i,
                                             CD.comboboxData);
                CellContainer CC =
                    new CellContainer(CD.defVal, CI);
                HeaderCellContainer.Add(CC);
            }
            List <RowContainer> RowContainers = new List <RowContainer>();

            for (int x = 0; x < rowIds.Count; x++)
            {
                List <CellContainer> ValueCellContainer =
                    new List <CellContainer>();
                for (int y = 0; y < columnData.Count; y++)
                {
                    CellInfo      CI    = HeaderCellContainer[y].CI;
                    string        value = columnData[y].rowVals[x].value;
                    CellContainer CC    = new CellContainer(value, CI);
                    ValueCellContainer.Add(CC);
                }
                RowContainer RC = new(rowIds[x], ValueCellContainer);
                RowContainers.Add(RC);
            }
            TableData_Server TDS =
                new TableData_Server(selectedId,
                                     tableName,
                                     HeaderCellContainer,
                                     bAddNewRow,
                                     RowContainers);

            return(TDS);
        }
コード例 #5
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
            }));
        }