/// <summary> /// Renders an image and a label. In edit mode, the image is wrapped in a hyperlink that is /// scripted to respond to clicks and change the "checkbox" state accordingly; /// in addition, the state is put into an additional hidden field. /// </summary> public void Render(BocBooleanValueRenderingContext renderingContext) { ArgumentUtility.CheckNotNull("renderingContext", renderingContext); var resourceSet = _resourceSetFactory.CreateResourceSet(renderingContext.Control); AddAttributesToRender(renderingContext, false); renderingContext.Writer.RenderBeginTag(HtmlTextWriterTag.Span); Label labelControl = new Label { ID = renderingContext.Control.ClientID + "_LabelValue" }; Image imageControl = new Image { ID = renderingContext.Control.ClientID + "_Image" }; HiddenField hiddenFieldControl = new HiddenField { ID = renderingContext.Control.GetValueName() }; HyperLink linkControl = new HyperLink { ID = renderingContext.Control.GetDisplayValueName() }; bool isClientScriptEnabled = DetermineClientScriptLevel(renderingContext); if (isClientScriptEnabled) { if (renderingContext.Control.Enabled) { RegisterStarupScriptIfNeeded(renderingContext, resourceSet); } string script = GetClickScript(renderingContext, resourceSet, imageControl, labelControl, hiddenFieldControl, renderingContext.Control.Enabled); labelControl.Attributes.Add("onclick", script); linkControl.Attributes.Add("onclick", script); } PrepareLinkControl(renderingContext, linkControl, isClientScriptEnabled); PrepareHiddenControl(renderingContext, hiddenFieldControl, renderingContext.Control.IsReadOnly); PrepareVisibleControls(renderingContext, resourceSet, imageControl, labelControl); hiddenFieldControl.RenderControl(renderingContext.Writer); linkControl.Controls.Add(imageControl); linkControl.RenderControl(renderingContext.Writer); labelControl.RenderControl(renderingContext.Writer); renderingContext.Writer.RenderEndTag(); }
/// <summary> /// Renders an image and a label. In edit mode, the image is wrapped in a hyperlink that is /// scripted to respond to clicks and change the "checkbox" state accordingly; /// in addition, the state is put into an additional hidden field. /// </summary> public void Render(BocBooleanValueRenderingContext renderingContext) { ArgumentUtility.CheckNotNull("renderingContext", renderingContext); var resourceSet = _resourceSetFactory.CreateResourceSet(renderingContext.Control); AddAttributesToRender(renderingContext); renderingContext.Writer.RenderBeginTag(HtmlTextWriterTag.Span); var labelControl = new Label(); var imageControl = new Image(); var hiddenFieldControl = new HiddenField { ID = renderingContext.Control.GetValueName(), ClientIDMode = ClientIDMode.Static }; var dataValueReadOnlyControl = new Label { ID = renderingContext.Control.GetValueName(), ClientIDMode = ClientIDMode.Static }; var linkControl = new HyperLink { ID = renderingContext.Control.GetDisplayValueName(), ClientIDMode = ClientIDMode.Static }; bool isClientScriptEnabled = DetermineClientScriptLevel(renderingContext); if (isClientScriptEnabled) { if (renderingContext.Control.Enabled) { RegisterStarupScriptIfNeeded(renderingContext, resourceSet); } var script = GetClickScript( renderingContext, resourceSet, renderingContext.Control.Enabled); labelControl.Attributes.Add("onclick", script); linkControl.Attributes.Add("onclick", script); } PrepareLinkControl(renderingContext, linkControl, isClientScriptEnabled); PrepareVisibleControls(renderingContext, resourceSet, imageControl, labelControl); if (!renderingContext.Control.IsReadOnly) { hiddenFieldControl.Value = renderingContext.Control.Value.HasValue ? renderingContext.Control.Value.ToString() : c_nullString; hiddenFieldControl.Visible = true; hiddenFieldControl.RenderControl(renderingContext.Writer); } else { if (renderingContext.Control.Value.HasValue) { dataValueReadOnlyControl.Attributes.Add("data-value", renderingContext.Control.Value.Value.ToString()); } dataValueReadOnlyControl.RenderControl(renderingContext.Writer); } linkControl.Controls.Add(imageControl); linkControl.RenderControl(renderingContext.Writer); labelControl.RenderControl(renderingContext.Writer); renderingContext.Writer.RenderEndTag(); }