2012-04-13 5 views
2

Kann mir bitte jemand sagen, wie Sie benutzerdefinierte Paging mit Datapager implementieren. Jetzt habe ich es geschafft, dies mit 2 Tasten (für die nächste und vorherige Seite) und LoadListview() -Methode zu tun, aber ich möchte diese Methode in Datapager verwenden. Irgendwelche Vorschläge?Listview benutzerdefinierte Auslagerung mit Datapager

-Code hinter Datei:

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["BusinessConnectionString"].ToString()); 
    SqlDataAdapter adap; 
    int startIndex; 

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

    private void LoadListview() 
    { 
     string FindWhat = Request.QueryString["Find"]; 
     string FindWhere = Request.QueryString["Where"]; 
     string TownName = FindWhere; 
     string CountyName = FindWhere; 
     string PostcodeName = FindWhere; 

     //startIndex = int.Parse(ViewState["index"].ToString()); 
     startIndex = MyDataPager.StartRowIndex * MyDataPager.PageSize; 
     int endIndex = startIndex + MyDataPager.PageSize; 

     adap = new SqlDataAdapter("SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY id_Business) AS MyRow, id_Business, Name, TownName FROM UbeloView WHERE (Name Like '%" + FindWhat + "%' AND TownName Like '%" + TownName + "%') UNION ALL SELECT ROW_NUMBER() OVER (ORDER BY id_Business) AS MyRow, id_Business, Name, TownName FROM UbeloView WHERE (Name Like '%" + FindWhat + "%' AND CountyName Like '%" + CountyName + "%') UNION ALL SELECT ROW_NUMBER() OVER (ORDER BY id_Business) AS MyRow, id_Business, Name, TownName FROM UbeloView WHERE (Name Like '%" + FindWhat + "%' AND PostcodeName Like '%" + PostcodeName + "%')) AS log WHERE MyRow >=" + startIndex + " AND MyRow <=" + endIndex + " ", conn); 

     DataSet ds = new DataSet(); 


     adap.Fill(ds); 

     lstBusiness.DataSource = ds; 
     lstBusiness.DataBind(); 
    } 

    protected void MyDataPager_PreRender(object sender, EventArgs e) 
    { 
     LoadListview(); 
    } 

Antwort

0

Dieser Artikel kann Ihnen helfen: http://www.codeproject.com/Articles/24065/Paging-ListView-With-DataPager

In diesem Artikel hat der Autor eine DataPager_PreRender zu binden, seine Daten zu einem Listview verwendet:

protected void DataPagerProducts_PreRender(object sender, EventArgs e) 
{ 
    ProductList db = new ProductList(); 
    this.ListViewProducts.DataSource = db.GellAll(); 
    this.ListViewProducts.DataBind(); 
} 

Sie könnten etwas ähnliches versuchen:

protected void MyDataPager_PreRender(object sender, EventArgs e) 
{ 
    LoadListview();  
} 

Dann müssen Sie nur Ihre LoadListview() Methode ändern, um den Startindex vom DataPager Steuerelement selbst zu erhalten.

private void LoadListview() 
    { 
     string FindWhat = Request.QueryString["Find"]; 
     string FindWhere = Request.QueryString["Where"]; 
     string TownName = FindWhere; 
     string CountyName = FindWhere; 
     string PostcodeName = FindWhere; 

     startIndex = MyDataPager.StartRowIndex * MyDataPager.PageSize; 
     adap = new SqlDataAdapter("<Query removed to save space>", conn); 

     DataSet ds = new DataSet();  

     adap.Fill(ds); 

     lstBusiness.DataSource = ds; 
     lstBusiness.DataBind(); 
    } 

Wie man sehen kann, erhalte ich die startIndex durch den Zeilenindex erhalten und durch die Seitengröße Ihres Datapager multipliziert wird. Jetzt können Sie nur diesen Teil Ihrer SQL-Abfrage von startIndex * 80 zu startIndex ändern.

Wenn alles nach Plan läuft, brauchen Sie nicht Ihre btnPrevious und btnNext Click-Ereignisse.

Ich hoffe, dies gibt Ihnen einen Einblick in das, was Sie erreichen wollen.

+0

Danke für die Antwort, Ill versuchen Sie das am Morgen. – Oak

+0

Ich habe diesen Weg versucht, aber etwas funktioniert immer noch nicht richtig. Es zeigt nur ein paar Seiten im Datapager (max war 4) und die gleiche Anzahl von Seiten, wenn ich die Seitengröße von 80 Datensätze pro Seite auf 16 oder eine andere Zahl ändern. – Oak

+0

@Oak: Können Sie Ihren ursprünglichen Beitrag bearbeiten und den Code hinzufügen, den Sie gerade verwenden? – sbhomra