1

UpdatePanel と MultiView の組み合わせに問題があります。

最上位に UpdatePanel があり、その中にたくさんの imagebutton があります。それらのクリック イベントは Multiview のビューを設定し、各 View にはバインディングを使用してその中に 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空の文字列に設定して、次の行で null オブジェクト参照例外を回避します。

  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 に答える