1

クイズ プロジェクトでは、質問には 2 つの項目 (T/F) または 4 つの項目 (a、b、c、d) のラジオボタン リストがあり、質問の数はさまざまです。パネルは、一度に 1 つの質問のみを表示するために使用されます (表示/非表示)。すべての質問に回答した後、ユーザーが送信ボタンをクリックすると、すべての回答がデータベースに保存されます。コード ビハインドでは、selecteditem は常に null で、value は常に空の文字列です。

<asp:DataList ID="dtQuestion" runat="server" RepeatDirection="Vertical" OnItemDataBound="FormatDataListRow" >
        <ItemTemplate>
            <asp:Panel id="panel" runat="server" BorderColor="#536895" BorderStyle="Solid" BorderWidth="1" style="display: none;" EnableViewState="true">
                <asp:Label id="lblQuestionDesc" runat="server" Text="" ></asp:Label>
                <asp:RadioButtonList id="rbl" runat="server" EnableViewState="true" >    </asp:RadioButtonList>
                </asp:Panel>
            </ItemTemplate>                
</asp:DataList>

送信をクリックします。ページで RBL を検索する関数を呼び出します。正しい ID とリスト アイテムを表示できますが、何も選択されていません。

 string id;
       if     (c.GetType().ToString().Equals("System.Web.UI.WebControls.RadioButtonList"))
               {
                   if (c.ID != "rbl")
                   {
                    id = c.ID;
                    al.Add(id + "," + ((RadioButtonList)c).SelectedItem.Value); //SelectedValue);  //
                }
            }
4

2 に答える 2

1

ページの読み込み時に RadioButtonList に値を設定しているようです - その場合は、RadioButtonList の値を If/Then/Postback ブロックで囲んでください: if not Page.IsPostBack then ' RBL end if

例えば:

        if (!IsPostBack)
        {
            loadradiobuttonlist();
        }
于 2014-01-03T18:24:38.873 に答える
0

次のように送信された値にアクセスしてみてください。

this.Request.Form[((RadioButtonList)c).UniqueID]

this.Request.Formデバッグ中に、コレクションにある値をいつでも確認できます。

于 2013-02-12T10:20:28.183 に答える