webForumDet fria alternativet

Egen radiobutton control

.NET

6 svar · 592 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
Frågan#1

Hej,
Jag måste få till en egen radiobutton control men hittar inga vettiga guider på hur man gör! :l
Den enda skillnaden kontrollen ska göra mot en vanlig radiobutton är att groupname ska fungera i en Repeater (vilket inte en vanlig gör!)
Jag började så här, är jag på rätt väg?
Denna kontroll renderas på aspx sidan men däremot, vilket jag nästa förstod, så blir groupname ändå fel! :)
Hur overridar jag groupname?

namespace Domain.Web.UI.Controls
{
    [DefaultProperty("Text")]
    [ToolboxData("<{0}:GroupRadioButton runat=server></{0}:GroupRadioButton>")]
    public class GroupRadioButton : RadioButton
    {
        [Bindable(true)]
        [Category("Appearance")]
        [DefaultValue("")]
        [Localizable(true)]
        public string Text
        {
            get
            {
                String s = (String)ViewState["Text"];
                return ((s == null) ? String.Empty : s);
            }

            set
            {
                ViewState["Text"] = value;
            }
        }

        [Bindable(true)]
        [Category("Appearance")]
        [DefaultValue("")]
        [Localizable(true)]
        public override string GroupName
        {
            get
            {
                
                String s = (String)ViewState["GroupName"];
                return ((s == null) ? String.Empty : s);
            }

            set
            {
                ViewState["GroupName"] = value;
            }
        }

        protected override void RenderContents(HtmlTextWriter output)
        {
            base.GroupName = GroupName;
            //output.Write(Text);
        }
    }
}
Medlem sedan juni 20003 076 inlägg
#2

Jag närmar mig, med denna kod får jag två namnattribut, ex:
<input type="radio" name="myGroup" id="..." value="..." name="repeater$ctl001$myGroup" />

namespace Domain.Web.UI.Controls
{
    [DefaultProperty("Text")]
    [ToolboxData("<{0}:GroupRadioButton runat=server></{0}:GroupRadioButton>")]
    public class GroupRadioButton : RadioButton
    {
        [Bindable(true)]
        [Category("Appearance")]
        [DefaultValue("")]
        [Localizable(true)]
        public string Text
        {
            get
            {
                String s = (String)ViewState["Text"];
                return ((s == null) ? String.Empty : s);
            }

            set
            {
                ViewState["Text"] = value;
            }
        }
      
        protected override void AddAttributesToRender(HtmlTextWriter writer)
        {
            writer.AddAttribute(HtmlTextWriterAttribute.Name, base.GroupName);
            base.AddAttributesToRender(writer);
        }
    }
}

Men hur tusan får jag bort orginal namn attributet?

Medlem sedan juni 20003 076 inlägg
#3

Ett steg framåt och ett tillbaka!
Med denna så ser allt rätt ut, radioboxarna renderas och det funkar att välja en, och endast en av de knappar jag lägger in på sidan.

//protected override void AddAttributesToRender(HtmlTextWriter writer)
        //{
        //    writer.AddAttribute(HtmlTextWriterAttribute.Name, base.GroupName);
        //    base.AddAttributesToRender(writer);
        //}

        protected override void Render(HtmlTextWriter writer)
        {
            writer.Write("<input id=\"" + base.ClientID + "\" ");
            writer.Write("type=\"radio\" ");
            writer.Write("name=\"" + base.GroupName + "\" ");
            writer.Write("value=\"" + base.ID + "\" ");
            if (base.Checked)
            {
                writer.Write("checked=\"checked\" ");
            }
            writer.Write(">");
            writer.Write(base.Text);
            writer.Write("</input>");
        }

...men:
Vid postback så kommer inte sidan ihåg vilken box som var icheckad! :(

Tips någon?

Medlem sedan sep. 2005673 inlägg
#4

Kan du inte använda en radiobuttonlist istället? Eller testa detta:
http://www.velocityreviews.com/forums/t83599-workaround-for-radiobutton-in-repeater-type-controls.html

Medlem sedan juni 20003 076 inlägg
#5

Nej, jag kan inte använda en radiobuttonlist pga. att kontrollen inte tillåter htmlkod mellan varje item. Jag vill kunna designa knapparna mer fritt.
Länken ser dock ut att innehålla exakt en sådan kontroll jag bygger på! :) Ska undersöka vidare. Tack! :bire

Medlem sedan feb. 20001 590 inlägg
#6

Är inte det enklaste att använda sig av en literal, och infoga htmlkoden för radiobutton i den?

Medlem sedan juni 20003 076 inlägg
#7

Toonster skrev:

Är inte det enklaste att använda sig av en literal, och infoga htmlkoden för radiobutton i den?

Enkelt, tja, kanske det. Men en bra lösning? Icke! :)
Intellisense rules!

275 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
135 ms — ändringar (db)