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); }
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); } } } }
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)); }
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); }