2013-06-20 64 views
0

我有一個ListView這裏面的UpdatePanel,的UpdateMode =條件:ListView的一個UpdatePanel內SelectedIndexChanging事件導致整個頁面重新加載

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <table> 
      <tr> 
       <td> 
        <asp:ListView ID="SearchListView" runat="server"> 
         <LayoutTemplate> 
          <div id="scrollDiv" onscroll="SaveScrollPosition();"> 
           <table> 
            <tr> 
            ... 
            </tr> 
           </table> 
          </div> 
         </LayoutTemplate> 
         <ItemTemplate> 
          <tr> 
           <td align="right"> 
            <asp:LinkButton ID="lblUnitItem" runat="server" CommandName="Select"></asp:LinkButton> 
           </td> 
          </tr> 
         </ItemTemplate> 
         <SelectedItemTemplate> 
          <tr> 
           <td align="right"> 
            <asp:LinkButton ID="lblUnitItem" runat="server" CommandName="Select"></asp:LinkButton> 
           </td> 
          </tr> 
         </SelectedItemTemplate> 
        </asp:ListView> 
       </td> 
      </tr> 
     </table> 
    </ContentTemplate> 
</asp:UpdatePanel> 

選擇列表項導致整個頁面重新加載,而不是部分頁面刷新。 我綁定的列表視圖中的方法「FillSearchListView」數據源,並實施了「OnSearchListViewItemCommand」和「OnSearchListViewSelectedIndexChanging」事件:

protected void OnSearchListViewSelectedIndexChanging(object sender, ListViewSelectEventArgs e) 
{ 
    ((ListView)sender).SelectedIndex = e.NewSelectedIndex; 
    FillSearchListView(); 
} 

protected void OnSearchListViewItemCommand(object sender, ListViewCommandEventArgs e) 
{ 
    switch (e.CommandName) 
    { 
     case "Select": 
      ListViewDataItem dataItem = (ListViewDataItem)e.Item; 
      this.CurrentId = decimal.Parse((string)e.CommandArgument); 
      break; 
    } 
} 

任何想法,爲什麼這是不工作?謝謝。

+0

哪一部分應該刷新? – AAlferez

+0

我的意思是說,我不希望在點擊列表項時刷新整個頁面。 – user1656557

+0

而你不必,但是你的哪一部分頁面必須更新? – AAlferez

回答

0

添加屬性:ChildrenAsTriggers = 「真」

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

見childerenastriggers here

1

喜用在更新面板

這裏觸發是代碼

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
        <ContentTemplate> 
         <table> 
          <tr> 
           <td> 
            <asp:ListView ID="SearchListView" runat="server"> 
             <LayoutTemplate> 
              </LayoutTemplate> 
             </asp:ListView> 
            </ContentTemplate> 
        <Triggers> 
         <asp:AsyncPostBackTrigger ControlID="SearchListView" EventName="SelectedIndexChanged" /> 
        </Triggers> 
     </asp:UpdatePanel> 
+0

:) –

0

試試這個

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <table> 
      <tr> 
       <td> 
        <asp:ListView ID="SearchListView" runat="server"> 
         <LayoutTemplate> 
          <div id="scrollDiv" onscroll="SaveScrollPosition();"> 
           <table> 
            <tr> 
             ... 
            </tr> 
           </table> 
          </div> 
         </LayoutTemplate> 
         <ItemTemplate> 
          <tr> 
           <td align="right"> 
            <asp:LinkButton ID="lblUnitItem" runat="server" CommandName="Select"></asp:LinkButton> 
           </td> 
          </tr> 
         </ItemTemplate> 
         <SelectedItemTemplate> 
          <tr> 
           <td align="right"> 
            <asp:LinkButton ID="lblUnitItem" runat="server" CommandName="Select"></asp:LinkButton> 
           </td> 
          </tr> 
         </SelectedItemTemplate> 
        </asp:ListView> 
       </td> 
      </tr> 
     </table> 
    </ContentTemplate> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="SearchListView" EventName="SelectedIndexChanging" /> 
     <asp:AsyncPostBackTrigger ControlID="SearchListView" EventName="ItemCommand" /> 
    </Triggers> 
</asp:UpdatePanel> 
1

在ASP.NET的新版本中,更改了ListView等容器內的控件的ID生成。 UpdatePanel上的觸發器無法解決此問題。

只需將ClientIDMode =「AutoID」放入鏈接按鈕(或其他控件)中,因此回發將是異步的。

相關問題