Попытка установить представление внутри UpdatePanel в PageLoad - PullRequest
1 голос
/ 25 апреля 2009

У меня проблемы с комбинацией UpdatePanel и MultiView.

У меня есть UpdatePanel на моем верхнем уровне, внутри у меня есть куча кнопок изображения - их события щелчка устанавливают представление в Multiview, и у каждого View есть UpdatePanel внутри с моей привязкой.

Все отлично работает, но я пытаюсь настроить представление с помощью строки запроса, чтобы я мог отправить пользователя определенному представлению.

Когда я пытаюсь установить View from 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>

1 Ответ

1 голос
/ 25 апреля 2009

ОБНОВЛЕНИЕ: После просмотра вашего кода более подробно, я считаю, выяснил проблему.

Я внес следующие изменения в код:

  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";
    }
}
...