1

如何为 HTML Select 控件添加服务器事件?

HTML 代码是这样的:

<div class="ui-widget">
    <select id="Select1" runat="server">
        <option>Select one...</option>
        <option>ActionScript</option>
        <option>AppleScript</option>
        <option>Asp</option>
        <option>BASIC</option>
    </select>
</div>

C#代码是这样的:

public void Select1_SomethingChange(object sender, EventArgs e)
{
    //random code
}

现在我知道它不起作用,HTML的第二行需要某种属性。我已经尝试了我能找到的唯一2个,这两个是下面的

<select id="Select1" runat="server" onServerChanged="Select1_SomethingChange">
<select id="Select1" runat="server" onSelectedIndexChanged="Select1_SomethingChange">    

问题是第一个选项事件永远不会触发,而第二个选项根本不存在。请在这里帮助我,欢迎任何帮助。

4

2 回答 2

1

2013 年的答案相当保守。该select元素有OnChange事件,请参阅:this MS doc

代码隐藏中的事件处理程序仅在发布事件之后调用。对于 Asp 控件,您添加AutoPostBack属性,否则您只需调用__doPostBack()javascript 方法。

完整示例:

<select id="select_clients" runat="server" 
   OnServerChange="SelectClients_Change" onchange="__doPostBack()">
</select>

代码隐藏:

using System.Web.UI.HtmlControls;//HtmlSelect

protected void SelectClients_Change(object sender, EventArgs e)
{
    HtmlSelect HS = sender as HtmlSelect;
    ListItem SelectedItem = HS.Items[HS.SelectedIndex];
}

注意:我在 Page_Load 中动态添加的选项使用:

select_clients.Items.Add(new ListItem("...name...", "...value...")

为什么使用原始 html 元素和 __doPostBack 调用而不是更高级别的 Asp.Net 控件?嗯,有时这很方便,例如与 Bootstrap 框架结合使用。

于 2017-09-07T14:42:47.983 回答
0

当您添加runat="server"到其他正常的 HTML 元素时,它会成为HtmlControl服务器端代码中的一个。这不会暴露很多事件。为了获得更丰富的服务器端事件,您需要使用 ASP.NET 控件。在这种情况下,这将是 a DropDownList,其中包含您要查找的事件

像这样的东西:

<div class="ui-widget">
    <asp:DropDownList id="Select1" OnSelectedIndexChanged="Select1_SomethingChange" runat="server">
        <asp:ListItem Selected="True" Value="White"> White </asp:ListItem>
        <asp:ListItem Value="Select one...">Select one...</asp:ListItem>
        <asp:ListItem Value="ActionScript">ActionScript</asp:ListItem>
        <asp:ListItem Value="AppleScript">AppleScript</asp:ListItem>
        <asp:ListItem Value="Asp">Asp</asp:ListItem>
        <asp:ListItem Value="BASIC">BASIC</asp:ListItem>
    </asp:DropDownList>
</div>
于 2013-11-11T14:38:14.650 回答