1

我在使用 UpdatePanel 和 MultiView 的组合时遇到问题。

我的顶层有一个 UpdatePanel,里面有一堆图像按钮 - 它们的点击事件在 Multiview 上设置视图,每个视图内部都有一个带有我的绑定的 UpdatePanel。

一切都很好 - 但我正在尝试通过查询字符串设置视图,因此我可以将用户发送到特定视图。

当我尝试从 PageLoad 设置视图时 - 它说“对象不存在”。所以我想我会在 Page_LoadComplete 中尝试它,效果很好 - 但是我的图像按钮无法像原来那样切换视图。

我错过了什么!谢谢!

  void Page_LoadComplete()
    {
        tabSelect= Request.QueryString["tab"];

            if (tabSelect.Contains("Community"))
            {
                MultiView1.SetActiveView(Community);

                btnCommunity.ImageUrl = "images/tabCommunity_on.png";

            }
     }




<asp:ScriptManager id="ScriptManager1" runat="server"/>
<asp:UpdatePanel id="UpdatePanel1" childrenastriggers="true" updatemode="Always" runat="server">
  <ContentTemplate>
    <asp:ImageButton id="btnCommunity" onclick="" runat="server">

    <asp:MultiView ID="MultiView1" ActiveViewIndex="0" runat="server">
        <asp:View ID="Community" runat="server">
            <asp:UpdatePanel id="UpdatePanel1" childrenastriggers="true" updatemode="Always" runat="server">
             //data controls in here
           </asp:UpdatePanel>
        </asp:View>
        <asp:View id="tabFriends" runat="server">
           <asp:UpdatePanel id="UpdatePanel2" childrenastriggers="true" updatemode="Always" runat="server">
             //data controls in here
           </asp:UpdatePanel>
         </asp:View>
     </asp:MultiView>
  </ContentTemplate>
</asp:UpdatePanel>
4

1 回答 1

1

更新:在更详细地查看了您的代码之后,我相信已经找到了问题所在。

我对代码做了以下调整:

  1. 如果未传递查询字符串,则设置tabSelect为空字符串,从而避免下一行出现空对象引用异常。

  2. 将 ImageUrl 路径设置为包含 ~(对于根目录)。

请尝试以下代码:

void Page_LoadComplete()
{
    string tabSelect = Request.QueryString["tab"] ?? string.Empty;

    if (tabSelect.Contains("Community"))
    {
        MultiView1.SetActiveView(Community);
        btnCommunity.ImageUrl = "~/images/tabCommunity_on.png";
    }
}
于 2009-04-25T00:53:27.507 回答