当其他更新面板执行时通过触发器刷新更新面板,因为第一个必须具有 UpdateMode=Conditional

Posted

技术标签:

【中文标题】当其他更新面板执行时通过触发器刷新更新面板,因为第一个必须具有 UpdateMode=Conditional【英文标题】:Refresh updatepanel through triggers when other updatepanel does because the first must have UpdateMode=Conditional 【发布时间】:2011-03-09 21:04:38 【问题描述】:

我在 asp.net 页面中有一些更新面板。我希望 updatepanel 2 在 updatepanel 1 执行时刷新,但 UpdatePanel 2 将他的 UpdateMode 属性设置为 Conditional 和 ChildrenAsTrigger=False,因为它内部还有另一个 updatePanels,我需要控制它的刷新方式。我试图触发另一个更新面板,但这似乎不起作用,也许我错过了一些东西

有没有办法做到这一点?

If you can't figure a valid example, imagine product category list and product list, when selected category change (linkbutton inside updatepanel) product list is refreshed which is inside another updatepanel, product list change for example when you order by price (订单在其他更新面板中),我不希望刷新类别列表。

提前致谢。

【问题讨论】:

【参考方案1】:

谢谢你,这就是我要找的!我的页面上有 2 个“更新面板”,一个保留我的表单,另一个保留 flexiGrid(非 .net 版本,纯 jQuery)。

我从我的网格中手动执行 AsyncPostBack 以进入编辑或删除模式。

function doPostBackAsync(eventName, eventArgs) 
    var prm = Sys.WebForms.PageRequestManager.getInstance();

    if (!Array.contains(prm._asyncPostBackControlIDs, eventName)) 
        prm._asyncPostBackControlIDs.push(eventName);
    

    if (!Array.contains(prm._asyncPostBackControlClientIDs, eventName)) 
        prm._asyncPostBackControlClientIDs.push(eventName);
    
    __doPostBack(eventName, eventArgs);


<a title="Edit" href="javascript:doPostBackAsync('Edit','2');">Edit</a>

然后我会处理它

string EventName = Request.Form["__EVENTTARGET"].ToString();
int EventValue = Request.Form["__EVENTARGUMENT"].ToString();

确定EventName和EventValue后调用下面的方法

protected void Edit(int id)

    //load the form here
    UpdatePanel1.Update(); //do the trick right, without this line unable to show form fields and other stuff with newly loaded data

问候。

(对不起我的英语)

【讨论】:

【参考方案2】:

您可以在页面的代码隐藏文件中调用updatePanelProdList.Update()。在您的场景中调用此方法的位置将是类别更改 LinkBut​​ton 的事件处理程序。

【讨论】:

interting,但如果理解得好,当页面完成他的事件处理时,这将导致另一个回发到 updatepanelProductList。我的意思是第一个回发链接按钮事件引发更新面板在页面中呈现,另一个回发更新面板产品列表更新。有没有办法避免这两个回发 只有一个回发。您选择一个类别并进行回发。在您的事件处理程序(服务器端)中,您调用 Update。唯一发生的事情是您告诉 ASP.NET 它应该重新呈现 UpdatePanel。不会发生额外的回发。

以上是关于当其他更新面板执行时通过触发器刷新更新面板,因为第一个必须具有 UpdateMode=Conditional的主要内容,如果未能解决你的问题,请参考以下文章

当asp.net的更新面板触发时,css类更改为初始状态

更新面板刷新后如何运行一些 javascript?

转发器会导致整个页面的回发,即使它位于更新面板内

更新面板 AJAX asp.net 后运行脚本

更新面板中的链接按钮导致页面刷新

更新面板刷新后 jQuery 不工作