Example #1
0
#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member 'BomDataTable.AddRowCollection(BomDataRowCollection)'
        public void AddRowCollection(BomDataRowCollection rowCollection)
        {
#pragma warning restore CS1591 // Missing XML comment for publicly visible type or member 'BomDataTable.AddRowCollection(BomDataRowCollection)'
            foreach (BomDataRowHolder row in rowCollection)
            {
                AddRow(row);
            }
        }
        public BomDataRowCollection ExpandRow()
        {
            BomDataRowCollection       rowCollection            = new BomDataRowCollection();
            Collection <BomDataColumn> quantityColumnCollection = new Collection <BomDataColumn>();

            int rowsAdded = 0;

            foreach (BomDataCell cell in this)
            {
                if (cell.Column.IsSplit)
                {
                    string[] values;

                    if (cell.Value == null)
                    {
                        values = new string[] { "" };
                    }
                    else if (cell.Column.Delimeter.Length != 0)
                    {
                        Regex test = new Regex(cell.Column.Delimeter);
                        values = test.Split(cell.Value.ToString()); // cell.Value.ToString().Split(new[] { cell.Column.Delimeter }, StringSplitOptions.None);
                    }
                    else if (cell.Column.SplitInto != -1)
                    {
                        values = new string[cell.Column.SplitInto];
                        string cellVal      = cell.Value.ToString();
                        int    splitIntoLen = cellVal.Length / cell.Column.SplitInto;

                        for (int i = 0; i < cell.Column.SplitInto; i++)
                        {
                            values[i] = cellVal.Substring(i * splitIntoLen, splitIntoLen);
                        }
                    }
                    else
                    {
                        values = new string[] { "" };
                    }

                    rowsAdded += values.Length;

                    foreach (string value in values)
                    {
                        rowCollection.Add(new BomDataRowHolder(cell.Row, cell.Column, value));
                    }
                }

                if (cell.Column.IsQuantity)
                {
                    quantityColumnCollection.Add(cell.Column);
                }
            }

            if (rowsAdded == 0)
            {
                rowCollection.Add(this);
                rowsAdded++;
            }

            if (quantityColumnCollection.Count > 0)
            {
                foreach (BomDataColumn column in quantityColumnCollection)
                {
                    foreach (BomDataRowHolder row in rowCollection)
                    {
                        if (row[column].Value != null && double.TryParse(row[column].Value.ToString(), out double valueToDouble))
                        {
                            row[column].Value = valueToDouble / rowsAdded;
                        }
                        else
                        {
                            row[column].Value = 0;
                        }
                    }
                }
            }

            return(rowCollection);
        }