0

我有一个包含两个部分的应用程序。

顶部有一个dropdownlist显示database使用代码隐藏方法 on 调用的所有成员page load

底部有一个网格,您可以在其中add / delete / edit使用JQuery. 此部分的更改显然不会重建顶部的下拉列表。

我想在JQuery成功方法中运行一些代码updates/rebuildsdropdownlist以反映成员的最新更改。如果可能的话,我希望使用相同的代码隐藏方法,将数据库点击page_loadpopulate下拉列表中。

这可能吗?如果是这样,我将如何实现这一目标?

任何帮助将不胜感激。

[请求代码]
.aspx 文件

<asp:DropDownList ID="director" runat="server"></asp:DropDownList> 
 jQuery success() fired on add/delete/update member grid.

.aspx.cs(后面的代码)

private void LoadDirectorOptions(int deptId)  
{
            var memberRepo = new MemberRepository();  
            List<Member> members = memberRepo.GetMembers(deptId);

            director.DataSource = members;
            director.DataTextField = "FullName";
            director.DataValueField = "Id";
            director.DataBind();
            director.Items.Insert(0, new ListItem("<Please Select>", "0")); 

}
4

3 回答 3

2

您不能在方法后面使用相同的代码,因为它是服务器端代码并​​且代码发生在客户端,除非您在代码执行JQuery 后刷新页面。JQuery您可以在为更新网格提供的同一 Web 服务上获取所有成员。

下列表。例如 :

  $.ajax({
      // Updating the grid here and retrun all the members : it will be saved in the response
      type: "Get",
      url: url,
      data: data,
      dataType: dataType,
      success: success(data)
    });

    function success(data)
    {
      //here you can get the resposne from the server
      // Iterate through data and add option elements
      $(".members").append("<option value=? text=?/>");

    }

很可能您的数据必须JSON包含服务器成员数据库表中的所有成员。然后您可以将一个CSS类(成员)添加到您的下拉列表中,并使用JQuery 选择器选择下拉列表。

希望这会有所帮助。

于 2013-09-25T14:50:02.940 回答
1

如果要刷新下拉列表而不刷新整个页面,则需要将它们包装在UpdatePanel中。当底部的网格发生更改时,更新 UpdatePanel 以重新绑定下拉列表。要强制 UpdatePanel 在 Javascript 中更新,您可以使用GetPostBackEventReference方法来强制回发,如下所示:

<%= Page.ClientScript.GetPostBackEventReference(updatePanelID, "")%>
于 2013-09-25T13:34:38.297 回答
1

应该在成功调用调用方法中使用 ajax。http://api.jquery.com/jQuery.ajax/

于 2013-09-25T13:35:44.707 回答