/// <summary> Creates the controls for the custom columns in the <paramref name="columns"/> array. </summary> private void CreateCustomColumnControls(BocColumnDefinition[] columns) { EnsureChildControls(); Assertion.IsTrue(_customColumnControls.Count == 0); Assertion.IsTrue(_customColumnsPlaceHolder.Controls.Count == 0); var controlEnabledCustomColumns = columns .Select((column, index) => new { Column = column as BocCustomColumnDefinition, Index = index }) .Where(d => d.Column != null) .Where( d => d.Column.Mode == BocCustomColumnDefinitionMode.ControlsInAllRows || d.Column.Mode == BocCustomColumnDefinitionMode.ControlInEditedRow) .ToArray(); foreach (var customColumnData in controlEnabledCustomColumns) { var customColumn = customColumnData.Column; var placeHolder = new PlaceHolder(); var customColumnTuples = new List <BocListCustomColumnTuple>(); foreach (var row in EnsureBocListRowsForCurrentPageGot()) { bool isEditedRow = _editModeController.IsRowEditModeActive && _editModeController.GetEditableRow(row.ValueRow.Index) != null; if (customColumn.Mode == BocCustomColumnDefinitionMode.ControlInEditedRow && !isEditedRow) { continue; } var args = new BocCustomCellArguments(this, customColumn); Control control = customColumn.CustomCell.CreateControlInternal(args); control.ID = ID + "_CustomColumnControl_" + customColumnData.Index + "_" + RowIDProvider.GetControlRowID(row.ValueRow); placeHolder.Controls.Add(control); customColumnTuples.Add(new BocListCustomColumnTuple(row.ValueRow.BusinessObject, row.ValueRow.Index, control)); } _customColumnsPlaceHolder.Controls.Add(placeHolder); _customColumnControls[customColumn] = customColumnTuples.ToArray(); } }
private string GetRowMenuID(BocListRow row) { return(ID + c_rowMenuIDPrefix + RowIDProvider.GetControlRowID(row)); }