【问题标题】:Refresh a control on the master page after postback回发后刷新母版页上的控件
【发布时间】:2011-02-07 03:29:03
【问题描述】:

我在这里要做的是以项目符号列表的形式显示一些验证消息,因此我的母版页上有一个包含 asp:bulletlist 的 Div。像这样:

                <div>
                <asp:BulletedList ID="blstValidationErrorMessage" runat="server" BulletStyle="Disc">
                </asp:BulletedList>
            </div>

当我从我的任何页面(主要 contentPlaceHolder 内)单击“保存”按钮时,我会创建一个消息列表并将此列表作为数据源提供,如下所示:

                blstValidationErrorMessage.DataSource = validationMessageCollection;
                blstValidationErrorMessage.DataBind();   

保存按钮位于更新面板内:

asp:UpdatePanel runat="server" ID="UpdatePanel" ChildrenAsTriggers="true" UpdateMode="Conditional">

什么都没有发生,我可以看到子弹列表的数据源包含 X 项,问题必须出现,因为“保存”按钮位于更新面板内,并且此更新面板之外的元素(例如母版页控件)未刷新。

所以我的问题是,我如何在回发后刷新子弹列表?

提前致谢。

【问题讨论】:

  • autopostback = true for your button 可能会有所帮助

标签: asp.net updatepanel master-pages postback


【解决方案1】:

如果您的按钮位于 UpdatePanel 中,您也应该将 BulletedList 控件放置在 UpdatePanel 中。

您可以在 MasterPage 文件中的 BulletedList 周围放置一个 UpdatePanel。将“UpdateMode”设置为“Conditional”,然后调用 UpdatePanel 的 Update 方法,仅在需要时刷新(例如单击“保存按钮”)。

【讨论】:

    【解决方案2】:

    “保存”按钮只会更新您放置它的 UpdatePanel 的内容。我建议您这样做:

    1. 将 SaveButton 移到 UpdatePanel 之外。你把它放在哪里,我会留给你。
    2. 将您的验证 div 放入另一个 UpdatePanel。称之为 ValidationUpdatePanel
    3. 将 SaveButton 添加为两个更新面板的 AsyncPostbackTrigger。由于您可能将每个 UpdatePanel 分成不同的控件/页面,因此您可能希望以编程方式在代码隐藏中执行此操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-28
      • 1970-01-01
      • 1970-01-01
      • 2010-11-25
      相关资源
      最近更新 更多