我在asp.net页面上有一些updatepanel。我希望updatepanel 2在updatepanel 1执行时刷新,但UpdatePanel 2将其UpdateMode属性设置为Conditional和ChildrenAsTrigger = False,因为它内部有另一个updatePanel,我需要控制刷新的方式。我试图触发其他更新面板,但这似乎不起作用,也许我错过了一些东西
有没有办法让这种情况发生?
如果你无法想出一个有效的例子,想象产品类别列表和产品列表,当选择类别更改(updatepanel内的linkbutton)产品列表刷新,这是在另一个updatepanel内,产品列表更改,例如当你按价格订购时(订单在其他updatepanel内),我不希望类别列表被刷新。
提前感谢。
答案 0 :(得分:4)
您可以在页面的代码隐藏文件中调用updatePanelProdList.Update()
。在您的场景中调用此方法的位置将是类别更改LinkButton的事件处理程序。
答案 1 :(得分:0)
谢谢,这就是我要找的!我的页面上有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
}
问候。
(对不起我的英文)