Radiobutton in repeater > Checked Problem

04/01/2009 - 18:59 von Christian Schlemmer | Report spam
Hallo,

Generiere mit einem Repeater dynamisch Radiobuttons aus einer Datenbank.
Nach einem Button_Click möchte ich für den gewàhlten Radiobutton mit der
Checked Property wieder was in die Datenbank schreiben. Das Problem ist,
dass obwohl ein Radiobutton gewàhlt wurde, Checked false ist.

Für den bekannten Bug mit der Radiobutton-Group (damit nur eine Checkbox
selektiert werden kann) hab ich eine Javascript-Lösung, welche allerdings
keinen Einfluss auf mein Problem hat. Ich poste es der Zusammengehörigkeit
wegen mit.

Die Abfrage für Checked ist in SetPaymentMethod() welche bei einem
Button_Click ausgelöst wird.

Weiss da jemand Rat? Vielen Dank.

Beste Grüsse
Christian Schlemmer


<script language="JavaScript" type="text/JavaScript">

function SetUniqueRadioButton(nameregex, current) //workaround for the
known .net bug with radiobuttons and repeater
{
re = new RegExp(nameregex);
for(i = 0; i < document.forms[0].elements.length; i++)
{
elm = document.forms[0].elements[i]
if (elm.type == 'radio')
{
if (re.test(elm.name))
{
elm.checked = false;
}
}
}
current.checked = true;
}
</script>

protected void Repeater1_ItemDataBound(object sender,
RepeaterItemEventArgs e)
{
if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType
!= ListItemType.AlternatingItem)
return;

RadioButton rdo = (RadioButton)e.Item.FindControl("Rdobtn");
string script = "SetUniqueRadioButton('Repeater1.*Payment',this)";
rdo.Attributes.Add("onclick", script);
}

protected void SetPaymentMethod()
{
for (int i = 0; i < Repeater1.Items.Count; i++)
{
RadioButton chk (RadioButton)Repeater1.Items[i].FindControl("Rdobtn");
if (chk.Checked)
Common.SetPaymentMethod(chk.Text, language, shopid, userid);
}
}



<asp:Repeater ID="Repeater1" runat="server"
OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
<asp:RadioButton ID="Rdobtn"
runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "name") %>'
GroupName="Payment" />
</ItemTemplate>
</asp:Repeater>
 

Lesen sie die antworten

#1 sascha b
14/09/2010 - 16:11 | Warnen spam
Hey I know this question is very old but I seem to have the same bug. In checkboxes and radiobuttons... If you or someone could send me an answer would be awesome!
Mail: or reply
Thanks

On Sunday, January 04, 2009 12:59 PM Christian Schlemmer wrote:

Hallo,

Generiere mit einem Repeater dynamisch Radiobuttons aus einer Datenbank.
Nach einem Button_Click m?chte ich f?r den gew?hlten Radiobutton mit der
Checked Property wieder was in die Datenbank schreiben. Das Problem ist,
dass obwohl ein Radiobutton gew?hlt wurde, Checked false ist.

F?r den bekannten Bug mit der Radiobutton-Group (damit nur eine Checkbox
selektiert werden kann) hab ich eine Javascript-L?sung, welche allerdings
keinen Einfluss auf mein Problem hat. Ich poste es der Zusammengeh?rigkeit
wegen mit.

Die Abfrage f?r Checked ist in SetPaymentMethod() welche bei einem
Button_Click ausgel?st wird.

Weiss da jemand Rat? Vielen Dank.

Beste Gr?sse
Christian Schlemmer


<script language="JavaScript" type="text/JavaScript">

function SetUniqueRadioButton(nameregex, current) //workaround for the
known .net bug with radiobuttons and repeater
{
re = new RegExp(nameregex);
for(i = 0; i < document.forms[0].elements.length; i++)
{
elm = document.forms[0].elements[i]
if (elm.type == 'radio')
{
if (re.test(elm.name))
{
elm.checked = false;
}
}
}
current.checked = true;
}
</script>

protected void Repeater1_ItemDataBound(object sender,
RepeaterItemEventArgs e)
{
if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType
!= ListItemType.AlternatingItem)
return;

RadioButton rdo = (RadioButton)e.Item.FindControl("Rdobtn");
string script = "SetUniqueRadioButton('Repeater1.*Payment',this)";
rdo.Attributes.Add("onclick", script);
}

protected void SetPaymentMethod()
{
for (int i = 0; i < Repeater1.Items.Count; i++)
{
RadioButton chk > (RadioButton)Repeater1.Items[i].FindControl("Rdobtn");
if (chk.Checked)
Common.SetPaymentMethod(chk.Text, language, shopid, userid);
}
}



<asp:Repeater ID="Repeater1" runat="server"
OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
<asp:RadioButton ID="Rdobtn"
runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "name") %>'
GroupName="Payment" />
</ItemTemplate>
</asp:Repeater>


Submitted via EggHeadCafe - Software Developer Portal of Choice
Lucene.Net Indexing Searching Entry Level Tutorial
http://www.eggheadcafe.com/tutorial...orial.aspx

Ähnliche fragen