2013-05-09 3 views
0

Я следовал учебнику at codeproject и наткнулся на проблему.Пейджинг не работает со списком

У меня есть ListView, перечисляя все текущие члены названия моего сайта:

<asp:ListView ID="lstMembers" runat="server"> 
    <LayoutTemplate> 
     <table> 
      <tr> 
       <th>Name</th> 
      </tr> 
      <tr id="itemPlaceholder" runat="server"></tr> 
     </table> 
    </LayoutTemplate> 
    <ItemTemplate> 
     <tr> 
      <td> 
       <%# Eval("MemberName") %> 
      </td> 
     </tr> 
    </ItemTemplate> 

</asp:ListView> 

И DataPager под:

<asp:DataPager ID="DataPagerProducts" runat="server" PagedControlID="lstMembers" 
    PageSize="3" OnPreRender="DataPagerProducts_PreRender"> 
    <Fields> 
     <asp:NumericPagerField /> 
    </Fields> 
</asp:DataPager> 

Я использую следующие привязки к списку (As за учебное пособие):

List<Members> member = new List<Members>(); 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(Page.IsPostBack) return; 

    DisplayMembers(); 
} 

private void DisplayMembers() 
{ 
    const string strSql = "SELECT DISTINCT [id], [memberNickname] FROM vwGetMemberDetails ORDER BY [memberNickname]"; 
    SqlCommand sqlComm = new SqlCommand(strSql, DataConn.Connect()) { CommandType = CommandType.Text }; 

    SqlDataReader rdr = sqlComm.ExecuteReader(); 
    while (rdr.Read()) 
    { 
     member.Add(new Members 
      { 
       MemberId = rdr["id"], 
       MemberName = rdr["memberNickname"] 
      }); 
    } 

    rdr.Close(); 
    DataConn.Disconnect(); 
} 

private class Members 
{ 
    public object MemberId { get; set; } 
    public object MemberName { get; set; } 
} 

protected void DataPagerProducts_PreRender(object sender, EventArgs e) 
{ 
    lstMembers.DataSource = member; 
    lstMembers.DataBind(); 
} 

Таким образом, в настоящее время существует 2 номера s на пейджере. Но каждый раз, когда я нажимаю 2, List ничего не отображает, а Pager исчезает.

Я обычно являюсь частым работником управления Repeater, и я использую этот метод только как «более удобный» способ.

Может ли кто-нибудь сказать мне, где я ошибаюсь?

ответ

1

Ваша переменная model не обновляется в DataPagerProducts_PreRender, поэтому она всегда будет отображать тот же набор данных, который уже загружен в загрузку страницы.

EDIT


удаления if(Page.IsPostBack) return; или вызова DisplayMembers() внутри DataPagerProducts_PreRender будет работать это для меня

+0

Спасибо за понимание ... Несмотря на то, положив 'DataBind()' в основной метод тоже не работает. – TheGeekZn

+0

Спасибо за редактирование, постарайтесь так скоро. – TheGeekZn

+0

Вы можете следовать этому руководству для пользовательской разбивки на страницы. http://tutorials.cmsnsoftware.com/2011/07/how-to-use-custom-pagination.html –

Смежные вопросы