예제 #1
0
        public bool AddBlankRow(IDataListItem selectedItem, out int indexToSelect)
        {
            indexToSelect = 1;
            var itemsAdded = false;

            if (selectedItem != null && selectedItem.CanHaveMutipleRows)
            {
                var recordset = DataList.RecordSets.FirstOrDefault(set => set.Name == selectedItem.Recordset);
                if (recordset != null)
                {
                    var recsetCols = new List <IScalar>();
                    foreach (var column in recordset.Columns)
                    {
                        recsetCols.AddRange(column.Value);
                    }
                    var numberOfRows    = WorkflowInputs.Where(c => c.Recordset == selectedItem.Recordset);
                    var lastItem        = numberOfRows.Last();
                    var indexToInsertAt = WorkflowInputs.IndexOf(lastItem);
                    var indexString     = lastItem.Index;
                    var indexNum        = Convert.ToInt32(indexString) + 1;
                    indexToSelect = indexToInsertAt + 1;
                    itemsAdded    = AddBlankRowToRecordset(selectedItem, recsetCols, indexToInsertAt, indexNum);
                }
            }
            return(itemsAdded);
        }
예제 #2
0
        void AddRow(IDataListItem itemToAdd, IRecordSet recordset)
        {
            var recsetCols = new List <IScalar>();

            foreach (var column in recordset.Columns)
            {
                var cols = column.Value.Where(scalar => scalar.IODirection == enDev2ColumnArgumentDirection.Input || scalar.IODirection == enDev2ColumnArgumentDirection.Both);
                recsetCols.AddRange(cols);
            }

            var numberOfRows = WorkflowInputs.Where(c => c.Recordset == itemToAdd.Recordset);
            IEnumerable <IDataListItem> dataListItems = numberOfRows as IDataListItem[] ?? numberOfRows.ToArray();
            var lastItem        = dataListItems.Last();
            var indexToInsertAt = WorkflowInputs.IndexOf(lastItem);
            var indexString     = lastItem.Index;
            var indexNum        = Convert.ToInt32(indexString) + 1;
            var lastRow         = dataListItems.Where(c => c.Index == indexString);
            var addRow          = false;

            foreach (var item in lastRow)
            {
                if (item.Value != string.Empty)
                {
                    addRow = true;
                }
            }
            if (addRow)
            {
                AddBlankRowToRecordset(itemToAdd, recsetCols, indexToInsertAt, indexNum);
            }
        }
 /// <summary>
 /// Used for intelligently determining if a extra row should be added for the selected recordset
 /// </summary>
 /// <param name="itemToAdd">The item that is currently selected</param>
 public void AddRow(IDataListItem itemToAdd)
 {
     if (itemToAdd != null && itemToAdd.IsRecordset)
     {
         string error;
         IBinaryDataListEntry recordset;
         DataList.TryGetEntry(itemToAdd.Recordset, out recordset, out error);
         if (recordset != null)
         {
             IList <Dev2Column> recsetCols = recordset.Columns.Where(cc => cc.ColumnIODirection == enDev2ColumnArgumentDirection.Input || cc.ColumnIODirection == enDev2ColumnArgumentDirection.Both).ToList();
             var numberOfRows = WorkflowInputs.Where(c => c.Recordset == itemToAdd.Recordset);
             IEnumerable <IDataListItem> dataListItems = numberOfRows as IDataListItem[] ?? numberOfRows.ToArray();
             var lastItem        = dataListItems.Last();
             var indexToInsertAt = WorkflowInputs.IndexOf(lastItem);
             var indexString     = lastItem.RecordsetIndex;
             var indexNum        = Convert.ToInt32(indexString) + 1;
             var lastRow         = dataListItems.Where(c => c.RecordsetIndex == indexString);
             var dontAddRow      = true;
             foreach (var item in lastRow)
             {
                 if (item.Value != string.Empty)
                 {
                     dontAddRow = false;
                 }
             }
             if (!dontAddRow)
             {
                 AddBlankRowToRecordset(itemToAdd, recsetCols, indexToInsertAt, indexNum);
             }
         }
     }
 }
예제 #4
0
 int UpdateIndexToSelect(IDataListItem itemToRemove, IDataListItem item)
 {
     if (itemToRemove.Index == item.Index)
     {
         var item1 = item;
         return(WorkflowInputs.IndexOf(WorkflowInputs.Last(c => c.Recordset == item1.Recordset)));
     }
     return(WorkflowInputs.IndexOf(itemToRemove));
 }
예제 #5
0
 public IDataListItem GetPreviousRow(IDataListItem selectedItem)
 {
     if (selectedItem != null)
     {
         var indexToInsertAt = WorkflowInputs.IndexOf(selectedItem);
         if (indexToInsertAt != -1)
         {
             var indexOfItemToGet = indexToInsertAt - 1;
             if (indexOfItemToGet == WorkflowInputs.Count || indexOfItemToGet == -1)
             {
                 return(selectedItem);
             }
             return(WorkflowInputs[indexOfItemToGet]);
         }
     }
     return(null);
 }
        /// <summary>
        /// Used for just adding a blank row to a recordset
        /// </summary>
        /// <param name="selectedItem">The item that is currently selected</param>
        /// <param name="indexToSelect"></param>
        public bool AddBlankRow(IDataListItem selectedItem, out int indexToSelect)
        {
            indexToSelect = 1;
            bool itemsAdded = false;

            if (selectedItem != null && selectedItem.IsRecordset)
            {
                string error;
                IBinaryDataListEntry recordset;
                DataList.TryGetEntry(selectedItem.Recordset, out recordset, out error);
                if (recordset != null)
                {
                    IList <Dev2Column>          recsetCols   = recordset.Columns;
                    IEnumerable <IDataListItem> numberOfRows = WorkflowInputs.Where(c => c.Recordset == selectedItem.Recordset);
                    IDataListItem lastItem        = numberOfRows.Last();
                    int           indexToInsertAt = WorkflowInputs.IndexOf(lastItem);
                    string        indexString     = lastItem.RecordsetIndex;
                    int           indexNum        = Convert.ToInt32(indexString) + 1;
                    indexToSelect = indexToInsertAt + 1;
                    itemsAdded    = AddBlankRowToRecordset(selectedItem, recsetCols, indexToInsertAt, indexNum);
                }
            }
            return(itemsAdded);
        }
        /// <summary>
        /// Used for removing a row for the collection
        /// </summary>
        /// <param name="itemToRemove">The item that will be removed from the collection</param>
        /// <param name="indexToSelect"></param>
        public bool RemoveRow(IDataListItem itemToRemove, out int indexToSelect)
        {
            indexToSelect = 1;
            var itemsRemoved = false;

            if (itemToRemove != null && itemToRemove.IsRecordset)
            {
                // ReSharper disable InconsistentNaming
                IEnumerable <IDataListItem> NumberOfRows = WorkflowInputs.Where(c => c.Recordset == itemToRemove.Recordset && c.Field == itemToRemove.Field);
                // ReSharper restore InconsistentNaming
                var numberOfRows = NumberOfRows.Count();
                List <IDataListItem> listToRemove = WorkflowInputs.Where(c => c.RecordsetIndex == numberOfRows.ToString(CultureInfo.InvariantCulture) && c.Recordset == itemToRemove.Recordset).ToList();

                if (numberOfRows == 2)
                {
                    IEnumerable <IDataListItem> firstRow = WorkflowInputs.Where(c => c.RecordsetIndex == "1" && c.Recordset == itemToRemove.Recordset);
                    bool removeRow = firstRow.All(item => string.IsNullOrWhiteSpace(item.Value));

                    if (removeRow)
                    {
                        IEnumerable <IDataListItem> listToChange = WorkflowInputs.Where(c => c.RecordsetIndex == "2" && c.Recordset == itemToRemove.Recordset);

                        foreach (IDataListItem item in listToChange)
                        {
                            item.Value = string.Empty;
                        }
                        foreach (IDataListItem item in listToRemove)
                        {
                            WorkflowInputs.Remove(item);
                            // ReSharper disable once ConvertIfStatementToConditionalTernaryExpression
                            if (itemToRemove.RecordsetIndex == item.RecordsetIndex)
                            {
                                IDataListItem item1 = item;
                                indexToSelect = WorkflowInputs.IndexOf(WorkflowInputs.Last(c => c.Recordset == item1.Recordset));
                            }
                            else
                            {
                                indexToSelect = WorkflowInputs.IndexOf(itemToRemove);
                            }
                            itemsRemoved = true;
                        }
                    }
                }
                else if (numberOfRows > 2)
                {
                    IEnumerable <IDataListItem> listToChange = WorkflowInputs.Where(c => c.RecordsetIndex == (numberOfRows - 1).ToString(CultureInfo.InvariantCulture) && c.Recordset == itemToRemove.Recordset);
                    foreach (IDataListItem item in listToChange)
                    {
                        item.Value = string.Empty;
                    }
                    foreach (IDataListItem item in listToRemove)
                    {
                        WorkflowInputs.Remove(item);
                        // ReSharper disable once ConvertIfStatementToConditionalTernaryExpression
                        if (itemToRemove.RecordsetIndex == item.RecordsetIndex)
                        {
                            IDataListItem item1 = item;
                            indexToSelect = WorkflowInputs.IndexOf(WorkflowInputs.Last(c => c.Recordset == item1.Recordset));
                        }
                        else
                        {
                            indexToSelect = WorkflowInputs.IndexOf(itemToRemove);
                        }
                        itemsRemoved = true;
                    }
                }
            }
            return(itemsRemoved);
        }