2012-07-11 95 views
0

ListView顯示正常,DataPager顯示底部的按鈕,但是當我點擊NEXT按鈕時,DataPager不會進入下一頁數據。ListView DataPager不是分頁

ASPX頁面:

<div id="EventListing"> 
     <asp:ListView ID="ListEvents" runat="server"> 
      <LayoutTemplate> 
       <div ID="itemPlaceholder" runat="server"> 
       </div> 
       <div id="pagerFormat"> 
        <asp:DataPager ID="ListingDataPager" runat="server" PageSize="5" PagedControlID="ListEvents" QueryStringField="page" > 
         <Fields> 
          <asp:NextPreviousPagerField 
          FirstPageText="First" 
          LastPageText="Last" 
          NextPageText="Next" 
          PreviousPageText="Back" /> 
         </Fields> 
        </asp:DataPager> 
       </div> 
      </LayoutTemplate> 

      <ItemTemplate> 
       <table id="tblEvents"> 
        <tr> 
         <td rowspan="4" id="Col1Events"></td> 
         <td rowspan="4" id="Col2Events"></td> 
         <td rowspan="4" id="Col3Events"></td> 
         <td class="tdEvents"><span style="font-weight:bold; font-size: 1em;"><%#Eval("EVENT_DATERANGE") %>:&nbsp;&nbsp;<%#Eval("EVENT_NAME") %></span></td> 
        </tr> 
        <tr> 
         <td class="tdEvents"> <span style="font-size: .9em;"><%#Eval("EVENT_DESC") %></span></td> 
        </tr> 
        <tr> 
         <td class="tdEvents"><span style="font-size: .9em;"><%#Eval("EVENT_STREET") %>, <%#Eval("CITY.CITY_NAME") %></span></td> 
        </tr> 
        <tr> 
         <td class="tdEvents"><span style="font-size: .9em;"><%#Eval("EVENT_PHONE") %></span></td> 
        </tr> 
        <tr> 
         <td colspan="4" id="tdEmpty"></td> 
        </tr>     
       </table> 
      </ItemTemplate> 
     </asp:ListView>   
    </div> 

代碼頁背後:

 protected void btnFindEvents_Click(object sender, EventArgs e) 
     { 
      DateTime StartDt; 
      string EventType = ddlEventType.SelectedValue; 
      string dt = Request.Form["DatePickername"]; 
      if (ddlEventType.SelectedIndex == 0) 
      { 
       EventType = ""; 
      } 
      if (dt != "") 
      { 
       StartDt = Convert.ToDateTime(Request.Form["DatePickerName"]); 
      } 
      else 
      { 
       StartDt = DateTime.Now; 
      } 
      string CityName= ddlEventCity.SelectedValue; 
      if (ddlEventCity.SelectedIndex == 0) 
      { 
       CityName = ""; 
      } 

      if ((ddlEventType.SelectedIndex == 0) && (ddlEventCity.SelectedIndex == 0)) 
      { 
       //(1) ALL EVENTS 
       BLgetEvents obj = new BLgetEvents(); 
       var EventList = obj.getAllEvents(StartDt); 
       ListEvents.DataSource = EventList; 
       ListEvents.DataBind(); 
      } 
} 

回答

1

必須再次對ListView控件,當您通過頁面綁定DataPager的數據。所以,你需要在你的ListView控件的PagePropertiesChanging事件上實現這個綁定。喜歡的東西:

// 1 - add a method to bind ListView, add some parameters if you need 
protected void BindListView() 
{ 
    var data = // get data from database 

    ListEvents.DataSource = data; 
    ListEvents.DataBind(); 
} 

// 2 - call this method on the button 
protected void btnFindEvents_Click(object sender, EventArgs e) 
{ 
    BindListView(); 
}   

// 3 - call this method on the PagePropertiesChanging event of the ListView 
protected void ListEvents_PagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e) 
{ 
    //set current page startindex, max rows and rebind to false 
    YourDataPagerControlId.SetPageProperties(e.StartRowIndex, e.MaximumRows, false); 

    //rebind List View 
    BindListView(); 
} 

並在您的Web窗體asp.net,你需要設置事件的列表視圖標籤:

<asp:ListView ID="ListEvents" runat="server" OnPagePropertiesChanging="ListEvents_PagePropertiesChanging"> 
... 
</asp:ListView> 

當您設置代碼behine數據源,同樣的原則是有效的對於GridView,DataList,Repeater等其他數據綁定控件(您需要在某個分頁事件中再次綁定)。另一種解決這個問題的方法是,你可以添加一個數據源控件(比如objectdatasource,linqdatasource等),並將其設置在ListView的DataSourceID屬性上,並且DataPager將自動工作。

有關詳細信息,看看這個鏈接:http://weblogs.asp.net/hajan/archive/2011/09/08/paging-listview-using-datapager-without-using-datasource-control.aspx

+0

我不知道我的理解 - 有沒有按鈕。 DataPager具有爲導航定義的字段,並且我明白他們應該處理調用適當的數據。 – Susan 2012-07-11 18:02:26

+0

你是從btnFindEvents點擊事件設置你的數據源的權利?當您通過代碼頁面查找時,您需要再次進行綁定。所以我建議你創建一個方法在你的listview上綁定數據,並在'btnFindEvents_Click'和'PagePropertiesChanging'上調用它。 – 2012-07-11 18:16:18