0

デフォルトではオプションが選択されていない RadioButtonList を使用する .NET/ASP.NET ベースのフォームがあります。

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Rb.ascx.cs" Inherits="Rb" %>
<table><tr><td align="left">
<asp:RadioButtonList ID="radioButtonList" runat="server">
</asp:RadioButtonList>
</td><td valign="top">
<asp:RequiredFieldValidator ID="radioButtonListValidator" runat="server" ControlToValidate="radioButtonList" ErrorMessage=": Please select an option." Text="*" ValidationGroup="validate">
</asp:RequiredFieldValidator>
</td></tr>
</table>

リスト内のオプションの 1 つについて、それが選択されるとすぐに警告メッセージ ボックスを生成したいと思います (何らかの説明ラベルや検証エラー メッセージを使用するのではなく)。私が知る限り、_SelectChanged のようなイベント ハンドラはありません。このような機能を実装してこのようなものを取得する方法を考えていました (以下は半疑似コードです。これは、必要なものに対するイベント ハンドラーがないように見えるため、必要なものをコーディングする方法がわからないためです)。

public override void radioButtonList_SelectionChanged(Object sender, EventArgs e)
{
    if(radioButtonList.SelectedItem == "Option 2") //Where 'Option 2' is displayed on the actual form next to the radio button
    {
        Messagebox.Show("Warning: Selecting this option may release deadly neurotoxins");
    }
}
4

3 に答える 3

1

正しい方法はValue、リスト コントロールで選択された項目のプロパティをチェックすることです。SelectedValueプロパティを使用できます。次のようなものを試してください。

if(radioButtonList.SelectedValue == "Option 2")
{
   Messagebox.Show("Warning: Selecting this option may release deadly neurotoxins")
}

プロパティを使用して確認することもできSelectedItem.Textます。

if(radioButtonList.SelectedItem.Text == "Option 2")
{
   Messagebox.Show("Warning: Selecting this option may release deadly neurotoxins")
}

asp.net を使用している場合、Messagebox.Show がないため、javascript アラートを使用する必要があります。

于 2013-06-20T17:09:30.873 に答える
0

これを試してみてください。

if(radioButtonList.SelectedValue == "Option 2")
{
string script = "alert('Warning: Selecting this option may release deadly neurotoxins');";
   ClientScript.RegisterClientScriptBlock(this.GetType(), "Alert", script, true);
}
于 2013-06-20T17:15:34.447 に答える
0

jquery を使用してこれを解決できます。それははるかに簡単です。ここにサンプルコードがあります。

$(document).ready(function () {
   $("#<%=radioButtonList.ClientID%> input").change(function(){
          alert('test');
   });
});
于 2013-06-20T18:45:18.237 に答える