我有一个由两个下拉框和一个gridview组成的网页。我创建了一个收集下拉框数据的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) {
}
})
}
由于
答案 0 :(得分:0)
你不能这样做。在ASP.NET中内置了一个名为Event Validation的安全功能,它可以阻止你发布服务器创建页面时不存在的数据。
您(或黑客)正在使用javascript更改下拉选项,然后尝试通过SelectedIndexChanged
将更改提交到服务器 - 您能看到为什么不允许这样做吗?
作为一种解决方法,您可以使用jQuery在下拉列表上实现change()
事件,并使用$ .ajax进行服务器端调用:
$("#ddlUser").change(function () {
alert("write $.ajax call to call the server here...");
});