更新母版页面板和内容页面中的asyncpostbacktrigger

时间:2015-08-01 07:10:02

标签: asp.net updatepanel master-pages

我在母版页中有一个购物车,这个购物车位于更新面板内 在我的内容页面中,我有一个列表视图,在此列表视图中存在linkbutton,用于将产品添加到我的购物车中 我想使用这些链接按钮将产品添加到购物车而不刷新,并且购物车已更新。 我在我的内容页面中有这个代码:

protected void Page_Init(object sender, EventArgs e)
    {
        UpdatePanel up = (this.Master.Master.FindControl("UpCart")) as UpdatePanel;
        AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
        trigger.ControlID = lvNewProducts.UniqueID;
        trigger.EventName = "ItemCommand";
        up.Triggers.Add(trigger);

    }

但点击链接按钮后,我的页面会刷新 请帮帮我!

1 个答案:

答案 0 :(得分:0)

你的意思是你想要一个部分回复,你得到一个完整的帖子回来了吗?

我认为您无法将AsyncPostbackTriggers从其他命名容器添加到更新面板。您尝试使用lvNewProducts.UniqueID来设置ControlID,通常使用ID设置。因此,这可能是一种暗示。

您可以在ScriptManager上调用RegisterAsyncPostBackControl。 假设您的ScriptManager在您的母版页中并且它的ID是myScriptManager,您可以使用以下内容:

protected void Page_Init(object sender, EventArgs e)
{
    ScriptManager myScriptManager = (this.Master.Master.FindControl("myScriptManager")) as ScriptManager;
    if (scriptManager != null) {
        scriptManager.RegisterAsyncPostBackControl(lvNewProducts);
    }
}

这取代了您的代码并导致部分回发。仍然缺少更新面板的更新链接,因此您应该执行以下操作以在ItemCommand事件处理程序中更新它(例如,如果您设置OnItemCommand =" ListViewClicked":

protected void ListViewClicked(object sender, EventArgs args) {
    //Do whatever necessary

    //Now update your update panel
    UpdatePanel up = (this.Master.Master.FindControl("UpCart")) as UpdatePanel;
    if (up != null) {
        up.Update();
    }
}