示例#1
0
        private static void NewDataRow(DataSet dataSet, IList <IColumn <TReader> > columns, TReader reader)
        {
            var model = dataSet.Model;

            model.SuspendIdentity();

            dataSet.AddRow(x =>
            {
                for (int i = 0; i < columns.Count; i++)
                {
                    var column = columns[i];
                    if (!column.IsReadOnly(x))
                    {
                        column.Read(reader, x);
                    }
                }
                x.IsPrimaryKeySealed = true;
            });

            model.ResumeIdentity();
        }
        /// <summary>
        /// Create a tab data response model
        /// </summary>
        /// <param name="response">Xml response</param>
        /// <returns>Response model</returns>
        public static WindowTabDataResponse CreateWindowTabDataResponse(XmlDocument response)
        {
            WindowTabDataResponse responseModel = new WindowTabDataResponse();

            if (HasFaultError(responseModel, response))
            {
                return(responseModel);
            }

            XmlNodeList xmlError = response.GetElementsByTagName("Error");

            if (xmlError.Count > 0)
            {
                responseModel.Status       = WebServiceResponseStatus.Error;
                responseModel.ErrorMessage = xmlError.Item(0).InnerText;
                return(responseModel);
            }

            XmlNodeList xmlSuccess = response.GetElementsByTagName("Success");

            if (xmlSuccess.Count > 0)
            {
                if (!bool.Parse(xmlSuccess.Item(0).InnerText))
                {
                    responseModel.Status = WebServiceResponseStatus.Unsuccessful;
                    return(responseModel);
                }
            }

            responseModel.Status = WebServiceResponseStatus.Successful;

            XmlNodeList xmlWindowTabData = response.GetElementsByTagName("WindowTabData");

            if (xmlWindowTabData.Count > 0)
            {
                XmlNode nodeNumRows = xmlWindowTabData.Item(0).Attributes.GetNamedItem("NumRows");
                if (nodeNumRows != null)
                {
                    string stringNumRows = nodeNumRows.Value.Trim();

                    if (!string.IsNullOrEmpty(stringNumRows))
                    {
                        responseModel.NumRows = int.Parse(stringNumRows);
                    }
                }

                XmlNode nodeTotalRows = xmlWindowTabData.Item(0).Attributes.GetNamedItem("TotalRows");
                if (nodeTotalRows != null)
                {
                    string stringTotalRows = nodeTotalRows.Value.Trim();

                    if (!string.IsNullOrEmpty(stringTotalRows))
                    {
                        responseModel.TotalRows = int.Parse(stringTotalRows);
                    }
                }

                XmlNode nodeStartRow = xmlWindowTabData.Item(0).Attributes.GetNamedItem("StartRow");
                if (nodeStartRow != null)
                {
                    string stringStartRow = nodeStartRow.Value.Trim();

                    if (!string.IsNullOrEmpty(stringStartRow))
                    {
                        responseModel.StartRow = int.Parse(stringStartRow);
                    }
                }
            }

            DataSet dataSet = new DataSet();

            responseModel.DataSet = dataSet;

            XmlNodeList xmlDataSet = response.GetElementsByTagName("DataRow");

            for (int i = 0; i < xmlDataSet.Count; i++)
            {
                DataRow dataRow = new DataRow();
                dataSet.AddRow(dataRow);

                XmlElement xmlDataRow = (XmlElement)xmlDataSet.Item(i);

                XmlNodeList xmlDataFields = xmlDataRow.GetElementsByTagName("field");

                for (int j = 0; j < xmlDataFields.Count; j++)
                {
                    Field field = new Field();
                    dataRow.AddField(field);

                    XmlElement xmlDataField = (XmlElement)xmlDataFields.Item(j);
                    field.Column = xmlDataField.Attributes.GetNamedItem("column").Value;

                    if (xmlDataField.GetElementsByTagName("val").Item(0).InnerText == null)
                    {
                        field.Value = "";
                    }
                    else
                    {
                        field.Value = xmlDataField.GetElementsByTagName("val").Item(0).InnerText;
                    }
                }
            }

            return(responseModel);
        }
示例#3
0
        /// <summary>
        /// Метод для генерации набора данных на основе текущей модели
        /// </summary>
        /// <returns></returns>
        public List <DataSet> CreateDataSet()
        {
            Columns = new ObservableCollection <DbDataColumn>(Columns.Where(column => column.IsValid()));

            var result  = new List <DataSet>((int)Math.Ceiling((decimal)RowsCount / ButchSize));
            var dataSet = new DataSet(
                Columns.ToDictionary(column => column.Name, column => column.Type)
                );
            var  random  = new Random();
            long minDate = new DateTime(1900, 1, 1).Ticks;
            long maxDate = DateTime.Now.Ticks;

            for (int i = 0; i < RowsCount; i++)
            {
                object[] rowData = new object[this.Columns.Count];

                for (int j = 0; j < Columns.Count; j++)
                {
                    if (j == 0)
                    {
                        // Первичный ключ
                        rowData[j] = i + 1;
                    }
                    else
                    {
                        DbDataColumn column = Columns[j];
                        object       value;

                        switch (column.Type)
                        {
                        case DataType.Number:
                            value = random.Next(int.MinValue, int.MaxValue);
                            break;

                        case DataType.Boolean:
                            value = random.Next(0, 1) == 1;
                            break;

                        case DataType.Date:
                            value = RandomDate(minDate, maxDate, random);
                            break;

                        case DataType.String:
                            value = RandomString(16, random);
                            break;

                        default:
                            value = null;
                            break;
                        }

                        rowData[j] = value;
                    }
                }

                dataSet.AddRow(rowData);
            }

            int copied = 0;

            while (copied < dataSet.Rows.Count)
            {
                result.Add(dataSet.Slice(copied, ButchSize));
                copied += ButchSize;
            }

            return(result);
        }
示例#4
0
        private static void AddRow(DataSet <DirectoryTreeItem> folders, string path)
        {
            var dataRow = folders.AddRow((_, x) => _.Path[x] = path);

            folders._.SubFolders.GetChildDataSet(dataRow).AddRow();
        }