O controle RadioButtonList gera uma série de tags HTML que para o desenvolvimento do CSS acaba dificultando sua estilização. Além disso, semânticamente o HTML gerado deveria ser baseado em UL (<UL>) e LI (<LI>).
Assim como na customização do updatepanel, basta sobrescrever o método responsável pela geração do HTML. Neste caso, o método Render.
Abaixo tem um exemplo:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Customizado.ControlLibrary
{
[ToolboxData("<{0}:CustomizadoRadioButtonList runat=server></{0}:CustomizadoRadioButtonList>")]
public class CustomizadoRadioButtonList : System.Web.UI.WebControls.RadioButtonList
{
protected override void Render(HtmlTextWriter writer)
{
// We start our un-ordered list tag.
writer.WriteBeginTag("ul");
// If the CssClass property has been assigned, we will add
// the attribute here in our <ul> tag.
if (this.CssClass.Length > 0)
{
writer.WriteAttribute("class", this.CssClass);
}
// We need to close off the <ul> tag, but we are not ready
// to add the closing </ul> tag yet.
writer.Write(">");
// Now we will render each child item, which in this case
// would be our checkboxes.
for (int i = 0; i < this.Items.Count; i++)
{
// We start the <li> (list item) tag.
writer.WriteFullBeginTag("li");
this.RenderItem(ListItemType.Item, i, new RepeatInfo(), writer);
// Close the list item tag. Some people think this is not
// necessary, but it is for both XHTML and semantic reasons.
writer.WriteEndTag("li");
}
// We finish off by closing our un-ordered list tag.
writer.WriteEndTag("ul");
}
}
}
Fonte: http://www.singingeels.com/Articles/Semantic_CheckBoxList__RadioButtonList.aspx
Nenhum comentário:
Postar um comentário