---
title: "Egen radiobutton control"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/182936-egen-radiobutton-control"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "doggelito"
published: "2010-03-24T07:29:01.000Z"
updated: "2010-03-25T17:34:26.000Z"
replies: 6
views: 611
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/182936-egen-radiobutton-control"
---

# Egen radiobutton control

## #1 — doggelito, 2010-03-24T07:29Z

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);
        }
    }
}
```

Permalänk: https://www.webforum.nu/p/182936

## #2 — doggelito, 2010-03-24T09:14Z

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?

Permalänk: https://www.webforum.nu/p/2231624

## #3 — doggelito, 2010-03-24T11:46Z

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?

Permalänk: https://www.webforum.nu/p/2231634

## #4 — inspiro, 2010-03-25T12:30Z

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>

Permalänk: https://www.webforum.nu/p/2231715

## #5 — doggelito, 2010-03-25T13:24Z

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

Permalänk: https://www.webforum.nu/p/2231717

## #6 — Toonster, 2010-03-25T17:14Z

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

Permalänk: https://www.webforum.nu/p/2231725

## #7 — doggelito, 2010-03-25T17:34Z

> **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!

Permalänk: https://www.webforum.nu/p/2231726

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/182936-egen-radiobutton-control
