0

SelectedIndexChanged 関数に追加のパラメータを送信する方法はありますか?

 <asp:RadioButtonList 
                    ID="rblMeetingPlace" 
                    SelectedValue = '<%# Bind("intMtgLoc") %>'
            *OnSelectedIndexChanged = "Validate('txtMeetPlaceOther')"*
                    runat="server" 
                    RepeatDirection="Horizontal"
 >
<asp:ListItem Value="1">Workshop</asp:ListItem>
<asp:ListItem Value="2">Service provider agency</asp:ListItem>
<asp:ListItem Value="3">Advocacy organization</asp:ListItem>
<asp:ListItem Value="4">Public Space</asp:ListItem>
<asp:ListItem Value="5">Other (specify): </asp:ListItem>
<asp:ListItem Value="" Text="" style="display: none" />
</asp:RadioButtonList>
<asp:TextBox ID="txtMeetPlaceOther" Text='<%# Bind("strMtgLocOth") %>' 
runat="server" />

いくつかのラジオボタンリストがあり、「その他」が選択されているときにテキストボックスを有効にしたいと考えています。テキストボックスのIDを送信して有効にすることを考えています。

何か案が?

4

1 に答える 1

1

次の方法で簡単に実行できます。

<asp:radiobuttonlist id="rbl1" runat="server" 
    RepeatDirection="Horizontal" 
    AutopostBack="true"
    SelectedValue='<%# Bind("intMtgLoc") %>' 
    OnselectedIndexChanged="rbl1_SelectedIndexChanged">
        <asp:ListItem Value="1">Workshop</asp:ListItem>
        <asp:ListItem Value="2">Service provider agency</asp:ListItem>
        <asp:ListItem Value="3">Advocacy organization</asp:ListItem>
        <asp:ListItem Value="4">Public Space</asp:ListItem>
        <asp:ListItem Value="5">Other (specify): </asp:ListItem>
        <asp:ListItem Value="" Text="" style="display:none" />
        </asp:radiobuttonlist>
<asp:textbox id="txtMeetPlaceOther" text='<%# Bind("strMtgLocOth") %>' runat="server" />
<asp:textbox id="TextBox1" enabled="false" runat="server"></asp:textbox>
<asp:textbox id="TextBox2" enabled="false" runat="server"></asp:textbox>

およびコード ビハインドで:

protected void rbl1_SelectedIndexChanged(object sender, EventArgs e)
    {
        *yourValidatorName*.Validate();
        if (Convert.ToInt32(rbl1.SelectedValue) == 5)
        {
            TextBox1.Enabled = true;
            TextBox2.Enabled = true;
        }
        else
        {
            TextBox1.Enabled = false;
            TextBox2.Enabled = false;
        }
    }

コメントへの返信: まず、すべてのイベント ハンドラーOnSelectedIndexChangedに対して設定する必要があります。RadioButtonListsここで - rbl_SelectedIndexChanged。次に、コードビハインドで:

protected void rbl_SelectedIndexChanged(object sender, EventArgs e)
        {

            TextBox[] textboxes = new TextBox[] { TextBox1, TextBox2 };//all your textboxes.

            RadioButtonList whoCallEvent = sender as RadioButtonList;


            string last = whoCallEvent.ID.ToString().Substring(whoCallEvent.ID.ToString().Length - 1, 1);//get the last symbol of object (TextBox) ID,  who call event. 
            int index = Convert.ToInt32(last);
            if (Convert.ToInt32(whoCallEvent.SelectedValue) == 5)
            {
                textboxes[index - 1].Enabled = true;
            }
            else
            {
                textboxes[index - 1].Enabled = false;
            }
        }

しかし、このようにするのは概念的に間違っていると思います。最善の方法は、マイページにrbl_SelectedIndexChangedあるすべてのものを作成することです。radioButtonList

于 2012-05-01T20:57:57.993 に答える