/// <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();
            }
        }
Example #2
0
 private string GetRowMenuID(BocListRow row)
 {
     return(ID + c_rowMenuIDPrefix + RowIDProvider.GetControlRowID(row));
 }