/// <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); }
/// <summary> /// Renders either the string value of the <paramref name="businessObject"/> or the edit mode controls, /// depending on <paramref name="showEditModeControl"/> /// </summary> /// <param name="renderingContext">The <see cref="BocColumnRenderingContext{BocColumnDefinition}"/>. </param> /// <param name="businessObject">The <see cref="IBusinessObject"/> for the current row.</param> /// <param name="showEditModeControl">Specifies if the edit controls will be rendered (<see langword="true"/>) or /// a string representation of <paramref name="businessObject"/> will be displayed (<see langword="false"/>).</param> /// <param name="editableRow">The <see cref="EditableRow"/> object used to actually render the edit row controls. /// May be <see langword="null"/> if <paramref name="showEditModeControl"/> is <see langword="false"/>.</param> protected override void RenderCellText( BocColumnRenderingContext <BocSimpleColumnDefinition> renderingContext, IBusinessObject businessObject, bool showEditModeControl, IEditableRow editableRow) { ArgumentUtility.CheckNotNull("renderingContext", renderingContext); ArgumentUtility.CheckNotNull("businessObject", businessObject); if (showEditModeControl) { RenderEditModeControl(renderingContext, businessObject, editableRow); } else { RenderValueColumnCellText(renderingContext, renderingContext.ColumnDefinition.GetStringValue(businessObject)); } }
public void RenderEditModeControl() { var firstObject = (IBusinessObject)((TypeWithReference)BusinessObject).FirstValue; IEditableRow editableRow = MockRepository.GenerateMock <IEditableRow>(); editableRow.Stub(mock => mock.HasEditControl(0)).IgnoreArguments().Return(true); editableRow.Stub(mock => mock.GetEditControl(0)).IgnoreArguments().Return(MockRepository.GenerateStub <IBocTextValue>()); editableRow.Expect( mock => mock.RenderSimpleColumnCellEditModeControl( Html.Writer, Column, firstObject, 0)); List.EditModeController.Stub(mock => mock.GetEditableRow(EventArgs.ListIndex)).Return(editableRow); IBocColumnRenderer renderer = new BocSimpleColumnRenderer(new FakeResourceUrlFactory(), RenderingFeatures.Default, _bocListCssClassDefinition); renderer.RenderDataCell(_renderingContext, 0, false, EventArgs); 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 clickSpan = Html.GetAssertedChildElement(span, "span", 0); Html.AssertAttribute(clickSpan, "onclick", "BocList_OnCommandClick();"); editableRow.AssertWasCalled( mock => mock.RenderSimpleColumnCellEditModeControl( Html.Writer, Column, firstObject, 0)); }
/// <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); }
private void RenderEditModeControl( BocColumnRenderingContext <BocSimpleColumnDefinition> renderingContext, IBusinessObject businessObject, IEditableRow editableRow) { if (renderingContext.Control.HasClientScript) { renderingContext.Writer.AddAttribute(HtmlTextWriterAttribute.Onclick, c_onCommandClickScript); } renderingContext.Writer.RenderBeginTag(HtmlTextWriterTag.Span); // Begin span editableRow.RenderSimpleColumnCellEditModeControl( renderingContext.Writer, renderingContext.ColumnDefinition, businessObject, renderingContext.ColumnIndex); renderingContext.Writer.RenderEndTag(); // End span }
/// <summary> /// Renders the edit mode control. /// </summary> /// <param name="renderingContext">The <see cref="BocColumnRenderingContext{BocColumnDefinition}"/>.</param> /// <param name="businessObject">The <see cref="IBusinessObject"/> whose property will be rendered.</param> /// <param name="editableRow">The <see cref="EditableRow"/> object used to actually render the edit row controls.</param> protected override void RenderCellDataForEditMode( BocColumnRenderingContext <BocSimpleColumnDefinition> renderingContext, IBusinessObject businessObject, IEditableRow editableRow) { ArgumentUtility.CheckNotNull("renderingContext", renderingContext); ArgumentUtility.CheckNotNull("businessObject", businessObject); ArgumentUtility.CheckNotNull("editableRow", editableRow); RenderEditModeControl(renderingContext, businessObject, editableRow); }
protected abstract void RenderCellText( BocColumnRenderingContext <TBocColumnDefinition> renderingContext, IBusinessObject businessObject, bool showEditModeControl, IEditableRow editableRow);
/// <summary> /// Renders a string representation of the property of <paramref name="businessObject"/> that is shown in the column. /// </summary> /// <param name="renderingContext">The <see cref="BocColumnRenderingContext{BocColumnDefinition}"/>.</param> /// <param name="businessObject">The <see cref="IBusinessObject"/> whose property will be rendered.</param> /// <param name="showEditModeControl">Prevents rendering if <see langword="true"/>.</param> /// <param name="editableRow">Ignored.</param> protected override void RenderCellText(BocColumnRenderingContext <BocCompoundColumnDefinition> renderingContext, IBusinessObject businessObject, bool showEditModeControl, IEditableRow editableRow) { ArgumentUtility.CheckNotNull("renderingContext", renderingContext); ArgumentUtility.CheckNotNull("businessObject", businessObject); string valueColumnText = null; if (!showEditModeControl) { valueColumnText = renderingContext.ColumnDefinition.GetStringValue(businessObject); } RenderValueColumnCellText(renderingContext, valueColumnText); }
/// <summary> /// Renders a string representation of the property of <paramref name="businessObject"/> that is shown in the column. /// </summary> /// <param name="renderingContext">The <see cref="BocColumnRenderingContext{BocColumnDefinition}"/>.</param> /// <param name="businessObject">The <see cref="IBusinessObject"/> whose property will be rendered.</param> /// <param name="editableRow">Ignored.</param> protected override void RenderCellDataForEditMode( BocColumnRenderingContext <BocCompoundColumnDefinition> renderingContext, IBusinessObject businessObject, IEditableRow editableRow) { ArgumentUtility.CheckNotNull("renderingContext", renderingContext); ArgumentUtility.CheckNotNull("businessObject", businessObject); RenderValueColumnCellText(renderingContext, renderingContext.ColumnDefinition.GetStringValue(businessObject)); }
protected abstract void RenderCellDataForEditMode( BocColumnRenderingContext <TBocColumnDefinition> renderingContext, IBusinessObject businessObject, IEditableRow editableRow);