【发布时间】:2015-02-05 12:12:29
【问题描述】:
我的页面上有一个下拉列表,我从客户端 JavaScript 代码填充。 SelectedIndexChanged 不会触发。但是当我从代码隐藏(.cs 文件)中填充我的下拉列表时,甚至会被触发。
知道如何处理SelectedIndexChanged 从后面的代码填充下拉菜单。我可以看到根据我的需要填充下拉列表。只有SelectedIndexChanged 甚至没有被解雇。另请注意,下拉列表位于UpdatePanel 内。这会是一个原因吗?
这是我的 html、javascript 和事件背后的代码:
<asp:DropDownList ID="ddS" runat="server" OnSelectedIndexChanged="ddS_SelectedIndexChanged"
AutoPostBack="True" Style="position: absolute; width: 50%;">
Javascript:
$('#ddS').append('<option value="' + $(this).val() + '">' + $(this).text() + '</option>');
CS
protected void ddS_SelectedIndexChanged(object sender, EventArgs e)
{
}
任何帮助将不胜感激。提前致谢。
编辑
我这样做的主要原因是:
我使用jquery ui js 弹出窗口,它有一个多选下拉列表。由于弹出窗口中的按钮不能有服务器端事件,我使用 ajax 调用 .cs 文件中的 web 方法。此方法将使用在多选下拉列表中选择的选项从数据库中更新我的表。完成后,我想关闭弹出窗口并根据在多选中选择的选项填充下拉列表。
我无法从后面的代码中填充下拉列表,因为 web 方法是静态方法,因此从该方法调用的任何方法都必须是静态方法。如果我编写静态方法,那么我无法从静态方法访问 UI 控件(我的下拉菜单)。所以我希望我可以从 JS 中填充它,然后触发我的 indexchange 事件以进行进一步的计算。
【问题讨论】:
-
这个
#ddS有没有属性:runat="server"? -
@demo 是的,它有
runat属性。检查我上面的 HTML。
标签: javascript c# jquery asp.net selectedindexchanged