【问题标题】:update panel in master page and asyncpostbacktrigger in content page母版页中的更新面板和内容页中的 asyncpostbacktrigger
【发布时间】:2015-08-01 07:10:02
【问题描述】:

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

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);

    }

但是当我点击链接按钮时,我的页面会刷新。
请帮帮我!

【问题讨论】:

    标签: asp.net updatepanel master-pages


    【解决方案1】:

    您的意思是您想要回复部分帖子,而您正在回复完整帖子?

    我认为您不能将 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();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多