public void RenderDataRow(BocListRenderingContext renderingContext, BocListRowRenderingContext rowRenderingContext, int rowIndex) { ArgumentUtility.CheckNotNull("renderingContext", renderingContext); ArgumentUtility.CheckNotNull("rowRenderingContext", rowRenderingContext); var absoluteRowIndex = rowRenderingContext.SortedIndex; var originalRowIndex = rowRenderingContext.Row.Index; var businessObject = rowRenderingContext.Row.BusinessObject; bool isChecked = rowRenderingContext.IsSelected; bool isOddRow = (rowIndex % 2 == 0); // row index is zero-based here, but one-based in rendering => invert even/odd string cssClassTableRow = GetCssClassTableRow(renderingContext, isChecked); string cssClassTableCell = CssClasses.GetDataCell(isOddRow); renderingContext.Writer.AddAttribute(HtmlTextWriterAttribute.Class, cssClassTableRow); renderingContext.Writer.RenderBeginTag(HtmlTextWriterTag.Tr); _indexColumnRenderer.RenderDataCell(renderingContext, originalRowIndex, absoluteRowIndex, cssClassTableCell); _selectorColumnRenderer.RenderDataCell(renderingContext, rowRenderingContext, cssClassTableCell); var dataRowRenderEventArgs = new BocListDataRowRenderEventArgs(originalRowIndex, businessObject, true, isOddRow); renderingContext.Control.OnDataRowRendering(dataRowRenderEventArgs); foreach (BocColumnRenderer renderer in renderingContext.ColumnRenderers) { renderer.RenderDataCell(renderingContext, rowIndex, dataRowRenderEventArgs); } renderingContext.Writer.RenderEndTag(); }
private string GetCssClassTableRow( BocListRenderingContext renderingContext, bool isChecked, BocListDataRowRenderEventArgs dataRowRenderEventArgs) { string cssClassTableRow = CssClasses.DataRow; if (dataRowRenderEventArgs.IsOddRow) { cssClassTableRow += " " + CssClasses.DataRowOdd; } else { cssClassTableRow += " " + CssClasses.DataRowEven; } if (!string.IsNullOrEmpty(dataRowRenderEventArgs.AdditionalCssClassForDataRow)) { cssClassTableRow += " " + dataRowRenderEventArgs.AdditionalCssClassForDataRow; } if (isChecked && renderingContext.Control.AreDataRowsClickSensitive()) { cssClassTableRow += " " + CssClasses.DataRowSelected; } return(cssClassTableRow); }
public void RenderDataCell( BocColumnRenderingContext renderingContext, int rowIndex, bool showIcon, BocListDataRowRenderEventArgs dataRowRenderEventArgs) { }
/// <summary> /// Renders a table cell for <see cref="BocColumnRenderingContext.ColumnDefinition"/> containing the appropriate data from the /// <see cref="IBusinessObject"/> contained in <paramref name="dataRowRenderEventArgs"/> /// </summary> /// <param name="renderingContext">The <see cref="BocColumnRenderingContext{BocColumnDefinition}"/>.</param> /// <param name="rowIndex">The zero-based index of the row on the page to be displayed.</param> /// <param name="showIcon">Specifies if an object-specific icon will be rendered in the table cell.</param> /// <param name="dataRowRenderEventArgs">Specifies row-specific arguments used in rendering the table cell.</param> /// <remarks> /// This is a template method. Deriving classes must implement <see cref="RenderCellContents"/> to provide the contents of /// the table cell (<td>) element. /// </remarks> protected virtual void RenderDataCell( BocColumnRenderingContext <TBocColumnDefinition> renderingContext, int rowIndex, bool showIcon, BocListDataRowRenderEventArgs dataRowRenderEventArgs) { ArgumentUtility.CheckNotNull("renderingContext", renderingContext); ArgumentUtility.CheckNotNull("dataRowRenderEventArgs", dataRowRenderEventArgs); string cssClassTableCell = CssClasses.DataCell; if (!string.IsNullOrEmpty(renderingContext.ColumnDefinition.CssClass)) { cssClassTableCell += " " + renderingContext.ColumnDefinition.CssClass; } renderingContext.Writer.AddAttribute(HtmlTextWriterAttribute.Class, cssClassTableCell); if (_renderingFeatures.EnableDiagnosticMetadata) { AddDiagnosticMetadataAttributes(renderingContext); } renderingContext.Writer.RenderBeginTag(HtmlTextWriterTag.Td); RenderCellContents(renderingContext, dataRowRenderEventArgs, rowIndex, showIcon); renderingContext.Writer.RenderEndTag(); }
/// <summary> /// Renders the cell contents depending on the <paramref name="dataRowRenderEventArgs"/>'s /// <see cref="BocListDataRowRenderEventArgs.IsEditableRow"/> property. /// <seealso cref="BocColumnRendererBase{TBocColumnDefinition}.RenderCellContents"/> /// </summary> /// <remarks> /// If the current row is being edited, "Save" and "Cancel" controls are rendered; if the row can be edited, an "Edit" control is rendered; /// if the row cannot be edited, an empty cell is rendered. /// Since the "Save", "Cancel" and "Edit" controls are structurally identical, their actual rendering is done by <see cref="RenderCommandControl"/> /// </remarks> protected override void RenderCellContents( BocColumnRenderingContext <BocRowEditModeColumnDefinition> renderingContext, BocListDataRowRenderEventArgs dataRowRenderEventArgs, int rowIndex, bool showIcon) { ArgumentUtility.CheckNotNull("renderingContext", renderingContext); ArgumentUtility.CheckNotNull("dataRowRenderEventArgs", dataRowRenderEventArgs); bool isEditableRow = dataRowRenderEventArgs.IsEditableRow; int originalRowIndex = dataRowRenderEventArgs.ListIndex; var businessObject = dataRowRenderEventArgs.BusinessObject; bool isEditedRow = renderingContext.Control.EditModeController.GetEditableRow(originalRowIndex) != null; if (isEditedRow) { RenderEditedRowCellContents(renderingContext, originalRowIndex, businessObject); } else if (isEditableRow) { RenderEditableRowCellContents(renderingContext, originalRowIndex, businessObject); } else { renderingContext.Writer.Write(c_whiteSpace); } }
private void ChildrenList_DataRowRender(object sender, BocListDataRowRenderEventArgs e) { if (e.ListIndex == 3) { e.SetRowReadOnly(); } }
protected void Initialize(bool withRowObjects) { base.Initialize(); TypeWithReference businessObject; if (withRowObjects) { businessObject = TypeWithReference.Create( TypeWithReference.Create("referencedObject1"), TypeWithReference.Create("referencedObject2")); businessObject.ReferenceList = new[] { businessObject.FirstValue, businessObject.SecondValue }; } else { businessObject = TypeWithReference.Create(); businessObject.ReferenceList = new TypeWithReference[0]; } BusinessObject = (IBusinessObject)businessObject; BusinessObject.BusinessObjectClass.BusinessObjectProvider.AddService <IBusinessObjectWebUIService> (new ReflectionBusinessObjectWebUIService()); EventArgs = new BocListDataRowRenderEventArgs(10, (IBusinessObject)businessObject.FirstValue, false, true); InitializeMockList(); }
/// <summary> /// Renders a <see cref="DropDownMenu"/> with the options for the current row. /// <seealso cref="BocColumnRendererBase{TBocColumnDefinition}.RenderCellContents"/> /// </summary> /// <remarks> /// The menu title is generated from the <see cref="DropDownMenu.TitleText"/> and <see cref="DropDownMenu.TitleText"/> properties of /// the column definition in <see cref="BocColumnRenderingContext.ColumnDefinition"/>, and populated with the menu items in /// the <see cref="IBocList.RowMenus"/> property of <see cref="IBocList"/>. /// </remarks> protected override void RenderCellContents( BocColumnRenderingContext <BocDropDownMenuColumnDefinition> renderingContext, BocListDataRowRenderEventArgs dataRowRenderEventArgs, int rowIndex, bool showIcon) { ArgumentUtility.CheckNotNull("renderingContext", renderingContext); ArgumentUtility.CheckNotNull("dataRowRenderEventArgs", dataRowRenderEventArgs); if (renderingContext.Control.RowMenus.Count <= rowIndex) { renderingContext.Writer.Write(c_whiteSpace); return; } var dropDownMenu = renderingContext.Control.RowMenus[rowIndex]; if (renderingContext.Control.HasClientScript) { renderingContext.Writer.AddAttribute(HtmlTextWriterAttribute.Onclick, c_onCommandClickScript); } renderingContext.Writer.RenderBeginTag(HtmlTextWriterTag.Div); // Begin div dropDownMenu.Enabled = !renderingContext.Control.EditModeController.IsRowEditModeActive; dropDownMenu.TitleText = renderingContext.ColumnDefinition.MenuTitleText; dropDownMenu.TitleIcon = renderingContext.ColumnDefinition.MenuTitleIcon; dropDownMenu.RenderControl(renderingContext.Writer); renderingContext.Writer.RenderEndTag(); // End div }
protected override void RenderCellContents( BocColumnRenderingContext <StubColumnDefinition> renderingContext, BocListDataRowRenderEventArgs dataRowRenderEventArgs, int rowIndex, bool showIcon) { throw new NotImplementedException(); }
private void ChildrenList_DataRowRender(object sender, BocListDataRowRenderEventArgs e) { if (e.ListIndex == 3) { e.SetRowReadOnly(); e.SetAdditionalCssClassForDataRow ("test"); } }
protected override void RenderDataCell( BocColumnRenderingContext <StubColumnDefinition> renderingContext, int rowIndex, bool showIcon, BocListDataRowRenderEventArgs dataRowRenderEventArgs) { renderingContext.Writer.RenderBeginTag(HtmlTextWriterTag.Td); renderingContext.Writer.RenderEndTag(); }
void IBocColumnRenderer.RenderDataCell( BocColumnRenderingContext renderingContext, int rowIndex, bool showIcon, BocListDataRowRenderEventArgs dataRowRenderEventArgs) { RenderDataCell( new BocColumnRenderingContext <TBocColumnDefinition> (renderingContext), rowIndex, showIcon, dataRowRenderEventArgs); }
/// <summary> /// Renders a table cell for a <see cref="BocValueColumnDefinition"/>. /// </summary> protected override void RenderCellContents( BocColumnRenderingContext <TBocColumnDefinition> renderingContext, BocListDataRowRenderEventArgs dataRowRenderEventArgs, int rowIndex, bool showIcon) { ArgumentUtility.CheckNotNull("renderingContext", renderingContext); ArgumentUtility.CheckNotNull("dataRowRenderEventArgs", dataRowRenderEventArgs); int originalRowIndex = dataRowRenderEventArgs.ListIndex; IBusinessObject businessObject = dataRowRenderEventArgs.BusinessObject; IEditableRow editableRow = renderingContext.Control.EditModeController.GetEditableRow(originalRowIndex); bool hasEditModeControl = editableRow != null && editableRow.HasEditControl(renderingContext.ColumnIndex); bool showEditModeControl = hasEditModeControl && !editableRow.GetEditControl(renderingContext.ColumnIndex).IsReadOnly; string valueColumnText = null; if (!showEditModeControl) { valueColumnText = renderingContext.ColumnDefinition.GetStringValue(businessObject); } bool enforceWidth = RenderCropSpanBeginTag(renderingContext, showEditModeControl, valueColumnText); bool isCommandEnabled = RenderBeginTag(renderingContext, originalRowIndex, businessObject, valueColumnText); if (!hasEditModeControl) { if (showIcon) { RenderCellIcon(renderingContext, businessObject); } RenderOtherIcons(renderingContext, businessObject); } if (showEditModeControl) { RenderCellDataForEditMode(renderingContext, businessObject, editableRow); } else { RenderValueColumnCellText(renderingContext, valueColumnText); } RenderEndTag(renderingContext, isCommandEnabled); RenderCropSpanEndTag(renderingContext, enforceWidth); }
public void RenderDataRow(BocListRenderingContext renderingContext, BocListRowRenderingContext rowRenderingContext, int rowIndex) { ArgumentUtility.CheckNotNull("renderingContext", renderingContext); ArgumentUtility.CheckNotNull("rowRenderingContext", rowRenderingContext); var absoluteRowIndex = rowRenderingContext.SortedIndex; var originalRowIndex = rowRenderingContext.Row.Index; var businessObject = rowRenderingContext.Row.BusinessObject; bool isChecked = rowRenderingContext.IsSelected; bool isOddRow = (rowIndex % 2 == 0); // row index is zero-based here, but one-based in rendering => invert even/odd var dataRowRenderEventArgs = new BocListDataRowRenderEventArgs( originalRowIndex, businessObject, true, isOddRow); renderingContext.Control.OnDataRowRendering(dataRowRenderEventArgs); string cssClassTableRow = GetCssClassTableRow(renderingContext, isChecked, dataRowRenderEventArgs); string cssClassTableCell = CssClasses.DataCell; renderingContext.Writer.AddAttribute(HtmlTextWriterAttribute.Class, cssClassTableRow); if (_renderingFeatures.EnableDiagnosticMetadata) { // Note: business objects without identity can already be selected via row index. var businessObjectWithIdentity = rowRenderingContext.Row.BusinessObject as IBusinessObjectWithIdentity; if (businessObjectWithIdentity != null) { renderingContext.Writer.AddAttribute(DiagnosticMetadataAttributes.ItemID, businessObjectWithIdentity.UniqueIdentifier); } var oneBasedRowIndex = rowIndex + 1; renderingContext.Writer.AddAttribute(DiagnosticMetadataAttributesForObjectBinding.BocListRowIndex, oneBasedRowIndex.ToString()); } renderingContext.Writer.RenderBeginTag(HtmlTextWriterTag.Tr); GetIndexColumnRenderer().RenderDataCell(renderingContext, originalRowIndex, absoluteRowIndex, cssClassTableCell); GetSelectorColumnRenderer().RenderDataCell(renderingContext, rowRenderingContext, cssClassTableCell); RenderDataCells(renderingContext, rowIndex, dataRowRenderEventArgs); renderingContext.Writer.RenderEndTag(); }
public void RenderCellWithInnerHtmlControl() { Column.Mode = BocCustomColumnDefinitionMode.ControlsInAllRows; IBocColumnRenderer renderer = new BocCustomColumnQuirksModeRenderer(new FakeResourceUrlFactory(), _bocListQuirksModeCssClassDefinition); var args = new BocListDataRowRenderEventArgs(20, EventArgs.BusinessObject, EventArgs.IsEditableRow, EventArgs.IsOddRow); renderer.RenderDataCell(_renderingContext, 0, false, args); var document = Html.GetResultDocument(); var td = Html.GetAssertedChildElement(document, "td", 0); Html.AssertAttribute(td, "class", _bocListQuirksModeCssClassDefinition.DataCellOdd); var span = Html.GetAssertedChildElement(td, "span", 0); Html.AssertAttribute(span, "onclick", "BocList_OnCommandClick();"); }
public void RenderDataCell() { var dataRowRenderEventArgs = new BocListDataRowRenderEventArgs(0, null, true, true); _columnRenderMock.Expect( mock => mock.RenderDataCell( Arg <BocColumnRenderingContext> .Matches( rc => rc.HttpContext == _httpContextStub && rc.Control == _bocListStub && rc.Writer == _htmlTextWriterStub && rc.ColumnIndex == 0 && rc.ColumnDefinition == _columnDefinition), Arg.Is(0), Arg.Is(true), Arg.Is(dataRowRenderEventArgs))); _columnRenderMock.Replay(); _columnRendererAdapter.RenderDataCell(_renderingContext, 0, dataRowRenderEventArgs); _columnRenderMock.VerifyAllExpectations(); }
public void RenderEditable() { IBocColumnRenderer renderer = new BocRowEditModeColumnQuirksModeRenderer(new FakeResourceUrlFactory(), _bocListQuirksModeCssClassDefinition); EventArgs = new BocListDataRowRenderEventArgs(EventArgs.ListIndex, EventArgs.BusinessObject, true, EventArgs.IsOddRow); renderer.RenderDataCell(_renderingContext, 0, false, EventArgs); var document = Html.GetResultDocument(); var td = Html.GetAssertedChildElement(document, "td", 0); Html.AssertAttribute(td, "class", _bocListQuirksModeCssClassDefinition.DataCellOdd); var a = Html.GetAssertedChildElement(td, "a", 0); Html.AssertAttribute(a, "id", List.ClientID + "_Column_0_RowEditCommand_Edit_Row_10"); Html.AssertAttribute(a, "href", "#"); Html.AssertAttribute(a, "onclick", "postBackEventReference;BocList_OnCommandClick();"); Html.AssertTextNode(a, "Bearbeiten", 0); }
public override void SetUp() { Column = new BocRowEditModeColumnDefinition(); Column.EditText = "Bearbeiten"; Column.SaveText = "Speichern"; Column.CancelText = "Abbrechen"; Column.Show = BocRowEditColumnDefinitionShow.Always; base.SetUp(); EventArgs = new BocListDataRowRenderEventArgs(EventArgs.ListIndex, EventArgs.BusinessObject, true, EventArgs.IsOddRow); List.Stub(mock => mock.EnableClientScript).Return(true); List.Stub(mock => mock.IsDesignMode).Return(false); List.Stub(mock => mock.IsReadOnly).Return(false); List.DataSource.Mode = DataSourceMode.Edit; _bocListCssClassDefinition = new BocListCssClassDefinition(); _renderingContext = new BocColumnRenderingContext <BocRowEditModeColumnDefinition> (new BocColumnRenderingContext(HttpContext, Html.Writer, List, Column, 0, 0)); }
/// <summary> /// Renders a custom column cell either directly or by wrapping the contained controls, depending on <see cref="BocCustomColumnDefinition.Mode"/> /// and the current row state. /// </summary> /// <remarks> /// If the <see cref="BocCustomColumnDefinition.Mode"/> property of <see cref="BocColumnRenderingContext.ColumnDefinition"/> indicates that /// the custom cell does not contain any controls (<see cref="BocCustomColumnDefinitionMode.NoControls"/> or /// <see cref="BocCustomColumnDefinitionMode.ControlInEditedRow"/> when the current row is not being edited), /// a <see cref="BocCustomCellRenderArguments"/> object is created and passed to the custom cell's /// <see cref="BocCustomColumnDefinitionCell.RenderInternal"/> method. /// Otherwise, a click wrapper is rendered around the child control obtained from /// <see cref="IBocList"/>'s <see cref="IBocList.CustomColumns"/> property. /// </remarks> protected override void RenderCellContents( BocColumnRenderingContext <BocCustomColumnDefinition> renderingContext, BocListDataRowRenderEventArgs dataRowRenderEventArgs, int rowIndex, bool showIcon) { ArgumentUtility.CheckNotNull("dataRowRenderEventArgs", dataRowRenderEventArgs); int originalRowIndex = dataRowRenderEventArgs.ListIndex; IBusinessObject businessObject = dataRowRenderEventArgs.BusinessObject; bool isEditedRow = renderingContext.Control.EditModeController.IsRowEditModeActive && renderingContext.Control.EditModeController.GetEditableRow(originalRowIndex) != null; if (renderingContext.ColumnDefinition.Mode == BocCustomColumnDefinitionMode.ControlsInAllRows || (renderingContext.ColumnDefinition.Mode == BocCustomColumnDefinitionMode.ControlInEditedRow && isEditedRow)) { RenderCustomCellInnerControls(renderingContext, originalRowIndex, rowIndex); } else { RenderCustomCellDirectly(renderingContext, businessObject, originalRowIndex); } }
/// <summary> /// Renders a command control with an icon, text, or both. /// </summary> /// <remarks> /// A <see cref="BocCommandColumnDefinition"/> can contain both an object icon and a command icon. The former is rendered according to /// <paramref name="showIcon"/>, the latter if the column defintion's <see cref="BocCommandColumnDefinition.Icon"/> property contains /// an URL. Furthermore, the command text in <see cref="BocCommandColumnDefinition.Text"/> is rendered after any icons. /// </remarks> protected override void RenderCellContents( BocColumnRenderingContext <BocCommandColumnDefinition> renderingContext, BocListDataRowRenderEventArgs dataRowRenderEventArgs, int rowIndex, bool showIcon) { ArgumentUtility.CheckNotNull("renderingContext", renderingContext); ArgumentUtility.CheckNotNull("dataRowRenderEventArgs", dataRowRenderEventArgs); int originalRowIndex = dataRowRenderEventArgs.ListIndex; IBusinessObject businessObject = dataRowRenderEventArgs.BusinessObject; IEditableRow editableRow = renderingContext.Control.EditModeController.GetEditableRow(originalRowIndex); bool hasEditModeControl = editableRow != null && editableRow.HasEditControl(renderingContext.ColumnIndex); bool isCommandEnabled = RenderBeginTag(renderingContext, originalRowIndex, businessObject); RenderCellIcon(renderingContext, businessObject, hasEditModeControl, showIcon); RenderCellCommand(renderingContext); RenderEndTag(renderingContext, isCommandEnabled); }
public void RenderBasicCell_WithNewLineAndEncoding() { IBocColumnRenderer renderer = new BocCompoundColumnRenderer(new FakeResourceUrlFactory(), RenderingFeatures.Default, _bocListCssClassDefinition); var renderArgs = new BocListDataRowRenderEventArgs(0, (IBusinessObject)TypeWithReference.Create("value\r\nExtraText<html>"), false, true); renderer.RenderDataCell(_renderingContext, 0, false, renderArgs); var document = Html.GetResultDocument(); var td = Html.GetAssertedChildElement(document, "td", 0); Html.AssertAttribute(td, "class", _bocListCssClassDefinition.DataCell); var span = Html.GetAssertedChildElement(td, "span", 0); Html.AssertAttribute(span, "class", _bocListCssClassDefinition.Content); var textWrapper = Html.GetAssertedChildElement(span, "span", 0); Html.AssertTextNode(textWrapper, "value", 0); Html.GetAssertedChildElement(textWrapper, "br", 1); Html.AssertTextNode(textWrapper, "ExtraText<html>", 2); //This is actually encoded inside the asserted XmlDocument }
/// <summary> /// Renders the contents of the table cell. It is called by <see cref="RenderDataCell"/> and should not be called by other clients. /// </summary> /// <param name="renderingContext">The <see cref="BocColumnRenderingContext{BocCOlumnDefinition}"/>.</param> /// <param name="dataRowRenderEventArgs">The row-specific rendering arguments.</param> /// <param name="rowIndex">The zero-based index of the row to render in <see cref="IBocList"/>.</param> /// <param name="showIcon">Specifies if the cell should contain an icon of the current <see cref="IBusinessObject"/>.</param> protected abstract void RenderCellContents( BocColumnRenderingContext <TBocColumnDefinition> renderingContext, BocListDataRowRenderEventArgs dataRowRenderEventArgs, int rowIndex, bool showIcon);
public void RenderDataCell(BocRenderingContext <IBocList> renderingContext, int rowIndex, BocListDataRowRenderEventArgs dataRowRenderEventArgs) { ArgumentUtility.CheckNotNull("renderingContext", renderingContext); ArgumentUtility.CheckNotNull("dataRowRenderEventArgs", dataRowRenderEventArgs); var columnRenderingContext = new BocColumnRenderingContext( renderingContext.HttpContext, renderingContext.Writer, renderingContext.Control, ColumnDefinition, ColumnIndex, VisibleColumnIndex); _columnRenderer.RenderDataCell(columnRenderingContext, rowIndex, _showIcon, dataRowRenderEventArgs); }
private void RenderDataCells(BocListRenderingContext renderingContext, int rowIndex, BocListDataRowRenderEventArgs dataRowRenderEventArgs) { foreach (BocColumnRenderer columnRenderer in renderingContext.ColumnRenderers) { columnRenderer.RenderDataCell(renderingContext, rowIndex, dataRowRenderEventArgs); } }