在事件处理程序不起作用的情况下调用代码隐藏
本文关键字:调用 代码 隐藏 情况下 事件处理 程序 不起作用 | 更新日期: 2023-09-27 17:59:44
我有一个由两个下拉框和一个网格视图组成的网页。我创建了一个web服务来收集下拉框的数据,并使用ajax调用来填充它们。我遇到的问题是,当我尝试添加OnSelectedIndexChanged事件处理程序时,它似乎无法正常工作。我环顾四周,尝试了一些方法。我已经将EnableEventValidation设置为false(我认为这修复了一个与我的ddl在js中动态填充有关的问题)。我还在ddl上启用了AutoPostBack。
当我更改ddl索引时,页面似乎正在回发,但我的dll索引会反转回以前选择的索引。
<div class="row control-group">
<div class="form-group col-xs-12" id="mailbox">
<label>Which bills would you like to view?</label>
<asp:DropDownList ID="ddlDepartment" runat="server" CssClass="form-control"></asp:DropDownList>
<asp:DropDownList ID="ddlUser" runat="server" CssClass="form-control" OnSelectedIndexChanged="ddlUser_SelectedIndexChanged" AutoPostBack="true"></asp:DropDownList>
<p class="help-block text-danger"></p>
</div>
</div>
var a = 1
;只是为了在那里放置一个断点。
protected void ddlUser_SelectedIndexChanged(object sender, EventArgs e)
{
var a = 1;
}
下面是ajax请求和网格的生成
function getUsers() {
var department = $('select#MainContent_ddlDepartment option:selected').val();
$.ajax({
type: "GET",
url: "WEBSERVICEURL" + department + "",
contentType: "json",
dataType: "json",
async: false,
success: function (data) {
var ddlUsers = $("#MainContent_ddlUser");
ddlUsers.empty();
$.each(data, function () {
ddlUsers.append($("<option></option>").val(this['SamAccountName']).html(this['DisplayName']));
});
},
error: function (xhr) {
}
})
}
感谢
你不能这么做。ASP中内置了一个安全功能。NET调用的事件验证,它阻止您发布服务器创建页面时不存在的数据。
您(或黑客)正在使用javascript更改下拉选项,然后试图通过SelectedIndexChanged
将更改提交到服务器——您能理解为什么不允许这样做吗?
作为一种变通方法,您可以使用jQuery在下拉菜单上实现change()
事件,并使用$.ajax:进行服务器端调用
$("#ddlUser").change(function () {
alert("write $.ajax call to call the server here...");
});