0

デフォルト値が yes の radiobuttonlist に次のコードを使用しています。

 <asp:RadioButtonList ID="RadioButtonList1" runat="server" onselectedindexchanged="radiobtnlist_SelectedIndexChanged">
    <asp:ListItem Selected="True">YES</asp:ListItem>
    <asp:ListItem>NO</asp:ListItem>
 </asp:RadioButtonList>

radiobtnlist の値が変更されるたびに、イベントが発生します。選択したインデックスの変更に次の C# コードを使用しています。

protected void radiobtnlist_SelectedIndexChanged(object sender, EventArgs e)
{
    //do work
}

問題は、radiobtnlist 値が No に設定され、選択が変更されていない場合に selectedindex 変更イベントが発生し、radiobtnlist が Yes に設定されている場合、selectedindex 変更イベントが発生しないことです。

ポストバックの前に毎回 radiobtnlist の選択を見つける必要があり、その値が変更された場合はデータベースにデータを保存しましたが、ListItem のデフォルト値で radiobtnlist の選択された値を見つける方法。

4

1 に答える 1

0

私はあなたが言っていることを理解していると思います。

デフォルトの答えは YES です。これは、ユーザーが YES を選択したい場合、既に選択されているため、そのままにしておくことを意味します。RadioList 値はそのままなので、イベントはトリガーされません。

あなたが提供したコードに基づいて、「AutoPostBack」が設定されていないことがわかります。この場合、送信ボタンを介してポストバックをトリガーしていると想定しています。

送信ボタンを介してポストバックをトリガーしている場合は、そこにロジックを配置できます。そうすれば、毎回トリガーされます。例えば:

protected void submit_click(object sender, EventArgs e) 
{
    var answerIsYes = (radiobtnlist.SelectedIndex == 0);
    //store value to DB
}

フォームが既存のデータの編集に使用されるかどうかを指定していません。そうである場合、ポストバックごとに RadioList の値をデータベースに保存するのは効率的ではありません。値が変更された場合にのみ値が格納されるように、どのように変更するかを検討する必要があります。

于 2013-02-25T18:56:57.430 に答える