Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>You may want to use <a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.adapters.webcontroladapter%28v=vs.90%29.aspx" rel="noreferrer">WebControlAdapter</a> to change the way of how <code>RadioButtonList</code> is rendered.</p> <p>Below is the complete code for your case:</p> <pre><code>public class RadioButtonListAdapter : WebControlAdapter { protected override void RenderBeginTag(HtmlTextWriter writer) { writer.RenderBeginTag("div"); } protected override void RenderEndTag(HtmlTextWriter writer) { writer.RenderEndTag(); } protected override void RenderContents(HtmlTextWriter writer) { var adaptedControl = (RadioButtonList) Control; int itemCounter = 0; writer.Indent++; foreach (ListItem item in adaptedControl.Items) { var inputId = adaptedControl.ClientID + "_" + itemCounter++; // item div writer.RenderBeginTag("div"); writer.Indent++; // input writer.AddAttribute("type", "radio"); writer.AddAttribute("value", item.Value); writer.AddAttribute("name", adaptedControl.ClientID); writer.AddAttribute("id", inputId); if (item.Selected) { writer.AddAttribute("checked", "checked"); } writer.RenderBeginTag("input"); writer.RenderEndTag(); // label writer.AddAttribute("for", inputId); writer.RenderBeginTag("label"); writer.Write(item.Value); writer.RenderEndTag(); // div writer.Indent--; writer.RenderEndTag(); } writer.Indent--; } } </code></pre> <p>To connect this adapter to you application you have two options. First is to do it programmatically in page <strong>constructor</strong>:</p> <pre><code>var adapters = Context.Request.Browser.Adapters; var radioButtonListType = typeof(RadioButtonList).AssemblyQualifiedName; var adapterType = typeof(RadioButtonListAdapter).AssemblyQualifiedName; if (!adapters.Contains(radioButtonListType)) { adapters.Add(radioButtonListType, adapterType); } </code></pre> <p>Second option is using <code>.browser</code> file:</p> <p>Add new <code>Browser File</code> to your project. It will reside in <code>App_Browsers</code> folder. Then replace contents with following declaration:</p> <pre><code>&lt;browsers&gt; &lt;browser refID="Default"&gt; &lt;controlAdapters&gt; &lt;adapter controlType="System.Web.UI.WebControls.RadioButtonList" adapterType="&lt;your namespace&gt;.RadioButtonListAdapter" /&gt; &lt;/controlAdapters&gt; &lt;/browser&gt; &lt;/browsers&gt; </code></pre> <p>As a reference you can use links from ScottGu's post <a href="http://weblogs.asp.net/scottgu/archive/2005/12/21/asp-net-2-0-control-adapter-architecture.aspx" rel="noreferrer">ASP.NET 2.0 Control Adapter Architecture</a> they can give a good basement in this topic.</p> <p>Also there is an open source <a href="http://cssfriendly.codeplex.com/" rel="noreferrer">CSS Friendly Control Adapters</a> project that adresses some of rendering issues of default ASP.NET controls.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload