2016-07-22 4 views
0

Ich habe eine DataList erstellt, in der 2 Label und eine RadioButtonList sind. Die 2 Label enthält Fragen-ID und die Frage, in der die Fragen-ID ausgeblendet ist, und die RadioButtonList enthält die Optionen. Alle diese Kontrollen sind beschränkt. Hier ist der Code:
Get SelectedValue von RadioButtonList auf SelectedIndexChanged Ereignis in einem Datenverteiler mit C#

<asp:DataList ID="DataList1" runat="server"> 
    <ItemTemplate> 
     <asp:Label ID="Que_id" Visible="false" runat="server" Text='<%# Eval("question_id") %>'></asp:Label> 
     <asp:Label ID="Question" runat="server" Text='<%# Eval("question") %>'></asp:Label> 
     <asp:RadioButtonList ID="RadioButtonList1" AutoPostBack="true" RepeatColumns="2" runat="server" OnSelectedIndexChanged="RadioButtonList1_SelectedIndexChanged"> 
     </asp:RadioButtonList> 
    </ItemTemplate> 
</asp:DataList> 


Was ich versuche zu tun ist, wenn Benutzer eine Option in der RadioButtonList wählen die gewählte Option und seine Frage-ID sollte in der Datenbank gespeichert bekommen. Es ist einfach, das gesamte DataList beim Klickereignis zu speichern, aber ich möchte die Antwort nebeneinander speichern, wenn der Benutzer die Option für eine bestimmte Frage auswählt.

Ich weiß nicht, wie die Frage ID auf SelectedIndexChanged Ereignis erhalten, aber ich habe versucht, den folgenden Code auf SelectedIndexChanged, um den ausgewählten Optionswert zu erhalten, aber das funktioniert auch nicht.

RadioButtonList rbl = (RadioButtonList)DataList1.FindControl("RadioButtonList1"); 
string answer=rbl.SelectedValue; 


Weitere Klärung brachte ich diese Daten aus der Datenbank in einem DataSet und filtriert es für die Frage, ID, Frage und Optionen. Die Werte werden während des Page_Load im if (! IsPostBack) festgelegt.

+0

Informationen benötigen, auf dem Zustand, den Sie die Werte in Code hinter setzen. Ist diese Seite geladen? können Sie versuchen, 'wenn' - setzen Sie Liste Optionsfeld Daten oder unten versuchen, 'String fooValue = "foo"(IsPostBack!); ' ' // betrachte "foo" wird in der Datenbank gespeichert. Ordnen Sie es einer Variablen zu und verwenden Sie es ' ' rbl.SelectedIndex = rbl.Items.IndexOf (rbl.Items.FindByValue (fooValue)); ' – Thennarasan

+0

@Thennarasan lieferte die Informationen, überprüfen Sie es bitte. –

Antwort

0

unter Versuchen,

ändern

<asp:DataList ID="DataList1" runat="server"> 

Um

<asp:DataList ID="DataList1" OnItemCommand="DataList1_command" runat="server"> 

Sie Angenommen, eine <asp:Button und id wie button1 und OnClick als bclick

void bclick(object sender, DataListCommandEventArgs e) 
    { 
     foreach (DataListItem item in DataList1.Items) 
     { 
      HtmlInputRadioButton radio = (item.FindControl("radioButton") as HtmlInputRadioButton); 
      if (radio.Checked) 
      { 
       // this is you checked radio 
      } 
     } 
    } 
+0

Bitte wiederholen Sie die Frage Vorsichtig, kann ich dies ruhig leicht tun, aber was ich versuche zu tun ist, Daten während OnSelectedIndexChanged Ereignis nicht auf einen Klick auf eine Schaltfläche zu erhalten. –

0

Sie eine Hidden die Frage-ID in der Datalist speichern können (es ist mehr „natürlich“ als eine unsichtbare Label):

<asp:HiddenField ID="hiddenQuestionID" runat="server" Value='<%# Eval("question_id") %>' /> 

im Ereignishandler des Radiobuttonlist, können Sie den sender Parameter verwenden können um das Steuerelement abzurufen und dann den ausgewählten Wert zu erhalten. Die NamingContainer des Radiobuttonlist enthält auch die Hidden, aus dem Sie die Frage ID erhalten können:

protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    RadioButtonList rbl = sender as RadioButtonList; 
    string answer = rbl.SelectedValue; 
    HiddenField hiddenQuestionID = rbl.NamingContainer.FindControl("hiddenQuestionID") as HiddenField; 
    string questionID = hiddenQuestionID.Value; 
    ... 
} 
Verwandte Themen