使用Javascript / JQuery从代码后面更新下拉列表

时间:2013-09-25 13:25:28

标签: c# jquery asp.net drop-down-menu code-behind

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

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

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

我想在JQuery updates/rebuilds dropdownlist成功方法中运行一些代码,以反映对成员的最新更改。我希望尽可能使用相同的代码隐藏方法,在page_load上点击数据库到populate下拉列表。

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

非常感谢任何帮助。

[请求的代码]
.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")); 

}

3 个答案:

答案 0 :(得分: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选择器选择下拉列表。

希望这有用。

答案 1 :(得分:1)

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

<%= Page.ClientScript.GetPostBackEventReference(updatePanelID, "")%>

答案 2 :(得分:1)

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