我有两个部分的应用程序。
顶部有一个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"));
}
答案 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/