2009-03-24 9 views
0

Ich habe diese benutzerdefinierte Radiobuttonliste, die ich in meiner .aspx-Seite verwende, um den GroupName tatsächlich funktionieren zu können, da ich 2 RadiobuttonList-Steuerelemente auf der gleichen ASPX-Seite haben werde:RadioButtonList SelectedItem gibt immer EmptyString zurück

public class CustRadioButtonList : RadioButtonList, IRepeatInfoUser 
{ 
    void IRepeatInfoUser.RenderItem(ListItemType itemType, int repeatIndex, RepeatInfo repeatInfo, HtmlTextWriter writer) 
    { 
     RadioButton radioButton = new RadioButton(); 
     radioButton.Page = this.Page; 
     radioButton.GroupName = "radioButtonGroup"; 
     radioButton.ID = this.ClientID + "_" + repeatIndex.ToString(); 
     radioButton.Text = this.Items[repeatIndex].Text; 
     radioButton.Attributes["value"] = this.Items[repeatIndex].Value; 
     radioButton.Checked = this.Items[repeatIndex].Selected; 
     radioButton.TextAlign = this.TextAlign; 
     radioButton.AutoPostBack = this.AutoPostBack; 
     radioButton.TabIndex = this.TabIndex; 
     radioButton.Enabled = this.Enabled; 

     radioButton.RenderControl(writer); 
    } 
} 

also das ist nur eine einfache extentension, wo ich den Gruppennamen festgelegt, um sicherzustellen, dass alle von dieser Radiobuttonlist erstellt Radiobuttons haben den gleichen Gruppennamen, so dass jetzt, wenn jemand einen Wert von RadiobuttonList1 auswählt, abgewählt es jeden Wert, den sie gewählt haben in Radiobutton2 und umgekehrt (so sind sie sich gegenseitig ausschließende Radiobuttons).

Hinweis: Die Radiobuttonlists werden definitiv über einen Methodenaufruf gebunden, der in eine Prüfung für! Page.IsPostBack eingeschlossen ist, so dass das hier nicht das Problem ist.

Hier ist ein Beispiel, wo ich es in meiner ASPX-Seite bin mit:

<aj:CustRadioButtonList checked="false" ID="rblEmail" runat="server" /> 

<aj:CustRadioButtonList checked="false" ID="rblReason" runat="server" /> 

Hier in meinem Code-Behind, ich bin Onclick sogar von einem innerhalb eines für die selectedValue von der rblEmail Überprüfung Taste auf meinem page..but es gibt immer leeren String auch wenn ich ein Element in der Liste ausgewählt habe:

protected void btnContinue_Click(object sender, EventArgs e) 
    { 
     _actionID = rblEmail.SelectedValue; 

ich einen ganzen Tag damit verbracht habe um jetzt zu versuchen, herauszufinden, warum ich immer halte eine Leerzeichenkette wenn ich eindeutig ein va gewählt habe lue in rblEmail. Gleiches gilt für die andere Radiobuttonliste rblReason. In jedem Fall, wenn ich von Code-Behind überprüfe, bekomme ich eine leere Zeichenfolge für SelectedValue.

Wenn man sich das Markup aussehen, hier ist, wie es aussieht:

<table id="rblEmail" checked="false" border="0"> 
    <tr> 
     <td><input id="rblEmail_0" type="radio" name="radioButtonGroup" value="0" /><label for="rblEmai_0">All Offers</label></td> 

    </tr><tr> 
     <td><input id="rblEmail_1" type="radio" name="radioButtonGroup" value="1" /><label for="rblEmail_1">week</label></td> 
    </tr><tr> 
     <td><input id="rblEmail_2" type="radio" name="radioButtonGroup" value="2" /><label for="rblEmail_2">month</label></td> 
    </tr><tr> 
     <td><input id="rblEmail_3" type="radio" name="radioButtonGroup" value="3" /><label for="rblEmail_3">Holiday</label></td> 
    </tr> 

</table> 
      </div> 
... 

<table id="rblReason" checked="false" border="0"> 
    <tr> 
     <td><input id="rblReason_0" type="radio" name="radioButtonGroup" value="1" /><label for="rblReason_0">I receive</label></td> 
    </tr><tr> 
     <td><input id="rblReason_1" type="radio" name="radioButtonGroup" value="2" /><label for="rblReason_1">I have no need</label></td> 
    </tr><tr> 
     <td><input id="rblReason_2" type="radio" name="radioButtonGroup" value="3" /><label for="rblReason_2">Other</label></td> 

    </tr> 
</table> 
+0

Nur frage mich, warum eine einzige normale RBL für würden mit dieser Arbeit nicht? –

+0

Wie würde ich es ausspucken, ich habe 5 Radiobuttons in beiden Steuerelementen. Und ein asp.net radiobutton einzelnes Steuerelement in einem Repeater hat fast die gleichen Probleme mit Grouping und Bugs im Zusammenhang mit GroupName, die mit der UniqueID des Steuerelements überschrieben wird Ich bin neugierig, Sie meinen, geradeaus? – user72603

+0

Rex, erklären Sie im Detail, was Sie meinen. Redest du Repeater oder was? Ich habe nachgeschaut und eine Unmenge von Problemen gefunden, die mit dem Gruppierungsproblem fast identisch sind, und so weiter. Warum verschwenden meine Zeit mit den gleichen Problemen – user72603

Antwort

0

nicht genau wissen, warum dies nicht funktioniert, aber es scheint wie ein kleines Javascript würde eine einfache Abhilfe schaffen. Verwenden Sie anstelle eines benutzerdefinierten Steuerelements einfach normale RadioButton-Objekte ... und fügen Sie dann etwas Javascript hinzu, um die Auswahl in Liste1 zu löschen, wenn etwas in Liste2 ausgewählt ist, und umgekehrt.

Nicht sicher, warum Sie hier irgendeine Art von Repeater verwenden würden, wenn Sie bereits wissen, wie viele Radiobuttons es geben würde? (Pro Ihre Kommentare oben)

0

Es scheint, dass Sie die Radiobuttonlist auf der Seite zu laden sind bevölkern - Wenn ja - stellen Sie sicher, dass Sie Ihre Bevölkerung der Radiobuttonlist umgeben mit einem If/Then/Postback-Block: wenn nicht Page.IsPostBack dann 'bevölkern Ihre Radiobuttonlist Ende, wenn

zB:

 if (!IsPostBack) 
     { 
      loadradiobuttonlist(); 
     } 
Verwandte Themen