DataGrid中的LinkBut​​ton,用于触发多个UpdatePanel

时间:2011-06-02 14:57:26

标签: asp.net updatepanel postback

我有一个数据网格,列出了产品及其市场份额 - (dgProd)。该数据网格在DIV中以提供滚动。

单击其中一个产品名称会显示另外两个div / datagrid组合 - 一个包含摘要(dgSummary),另一个包含详细记录(dgDetail)。

dgProd的回发为dgSummary和dgDetail提供了解要显示的产品的信息。但是回发失去了dgProd中的位置。

我已经尝试将dgSummary和dgDetail放入UpdatePanels,但我仍然得到完整的回发。我考虑更改产品名称LinkBut​​ton来运行一些javascript而不是传统的回发,但后来我没有看到服务器如何在其他2个网格中显示相应的产品。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

你可以用jQuery做到这一点。

创建一个新的ASP页面,其中包含您的产品详细信息和产品摘要

在新的ASp页面中,将摘要网格加载到ID =“摘要”的Div中,将详细信息加载到ID =“详细信息”的Div中

然后,使用jQuery.ajax()调用您的新页面;调用..

然后,您可以使用#Summary或​​#Detail方法将每个“content”div加载到主页面中的占位符div ...

This是一篇很好的文章,可以帮助您入门并展示部分加载远程内容..

HTH。 戴夫

答案 1 :(得分:1)

您需要在UpdatePanel中将每个LinkBut​​ton注册为AsyncPostBackTrigger。在DataGrid中绑定每个项目之后,您需要搜索LinkBut​​ton并通过代码注册它,如下所示:

private void OnItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) {
   if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
       LinkButton lb = (LinkButton)e.Item.FindControl("myLinkButton");  
       ScriptManager.GetCurrent(this).RegisterAsyncPostBackControl(lb);
   }
}