2011-10-26 83 views
1

你好,我希望這會很容易有人回答。首先,我試圖製作綁定到DataPagerListView,並將其放入ASP.NET UpdatePanel中,以便爲我的數據庫中的記錄製作AJAX驅動的尋呼機。我抓住一個UpdatePanel和我放置:使用Asp.Net ListView和Asp.Net Ajax更新面板

  1. SqlDataSource
  2. ListView - 具有ItemTemplate包括一個ImageButton和其他一些ASP.NET控件在它
  3. DataPager

ContentTemplate。將DataPager ID分配給UpdatePanel的觸發字段中的AsyncPostbackTrigger完美工作。

我也想在ImageButtonClick事件中執行完整的回傳。但是,因爲ImageButton位於ListView之內,所以UpdataPanel會導致部分回傳。我嘗試將ImageButton添加爲UpdatePanelPostBackTrigger,但UpdatePanel需要控件ID,並且不會接受ImageButton,因爲它位於ListView之內。

如何向ListView中的ItemTemplate中的某個元素傳遞一個控制ID,併成功導致完全回發?

這裏是我的代碼:

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <asp:SqlDataSource ... ></asp:SqlDataSource> 
     <asp:ListView ID="ListViewForAlbums" runat="server" > 
      <ItemTemplate> 
       <div class="album"> 
        <asp:ImageButton ID="albumPhoto" class="albumPhotosStyle" runat="server" ImageUrl="<%# Bind('albumPhotoPath') %>" AlternateText="<%# Bind('album_id') %>" ToolTip="<%# Bind('albumDetails') %>" onclick="albumPhotos_Click" /> 
        <div class="albumInfoHolder"> 

        ... 

        </div> 
       </div> <!-- End Album --> 
      </ItemTemplate> 
      <EmptyDataTemplate> 
       <p>No Albums Yet. Check Back Soon!</p> 
      </EmptyDataTemplate> 
     </asp:ListView> 

     <asp:DataPager ID="DataPagerForAlbums" runat="server" PagedControlID="ListViewForAlbums" PageSize="3" > 
      <Fields> 
       <asp:NextPreviousPagerField ShowFirstPageButton="True" FirstPageText="&laquo" ShowNextPageButton="False" ShowPreviousPageButton="false" /> 
       <asp:NumericPagerField /> 
       <asp:NextPreviousPagerField ShowLastPageButton="True" LastPageText="&raquo" ShowPreviousPageButton="False" ShowNextPageButton="false" /> 
      </Fields> 
     </asp:DataPager> 
     </p> 
    </ContentTemplate> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="DataPagerForAlbums" /> 
    </Triggers> 
</asp:UpdatePanel> 

回答

0

使用的ItemDataBound ListView的事件得到的ImageButton並將其註冊爲具有ScriptManager的RegisterPostBackControl方法的回傳控制。

+0

你能否提供一些示例代碼! –

+0

nvm我做到了。非常感謝SIR :) –

2

您可以使用ScriptManager將該控件註冊爲回發控件。在ItemDataBound事件中做這樣的事情:

protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e) 
{ 
    ImageButton button = e.Item.FindControl("ImageButton1") as ImageButton; 
    if (button != null) 
    { 
     ScriptManager.GetCurrent(Page).RegisterPostBackControl(button);    
    } 
}