在事件处理程序不起作用的情况下调用代码隐藏

本文关键字:调用 代码 隐藏 情况下 事件处理 程序 不起作用 | 更新日期: 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...");
});