2016-09-29 4 views
0

Ich arbeite in E-Commerce-Website. Ich habe Listview-Steuerelement verwendet, um Produkte zu füllen. Auf einer Seite zeige ich 36 Produkte. Wenn ich jetzt mit Blättern auf die nächste Seite gehen möchte, funktioniert es nicht. Die Seite bleibt nur auf der ersten Seite. Ich habe 2 Lösungen ausprobiert.Datapager in Listview funktioniert nicht

Paging-Code

protected void OnPagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e) 
{ 
    if (IsPostBack) { 
     DataPager pgr = products.FindControl("DataPager1") as DataPager; 
     if (pgr != null && products.Items.Count != pgr.TotalRowCount) { 
      pgr.SetPageProperties(0, pgr.MaximumRows, false); 
     } 
    } 
} 

Ich habe viele CheckBoxList auf Filter Listview-Daten als auch. Also hier habe ich daran gedacht, dass, wenn der Benutzer auf einige Filter & wenn Zeilen < 36 dann Ergebnis von Seite 1 zeigt. In meinem unten Code funktioniert Paging ordnungsgemäß, aber wenn oben genannten Szenario passiert, dann wird es angezeigt leere Seite.

protected void OnPagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e) 
{ 
    (products.FindControl("DataPager1") as DataPager).SetPageProperties(e.StartRowIndex, e.MaximumRows, false); 
    this.populateProducts(); 
} 

UPDATE Pageload

try { 
    query = "SELECT * FROM products where stock_status = @stock_status and status = @status"; 
    string conString = ConfigurationManager.ConnectionStrings("conio").ConnectionString; 
    MySqlConnection con = new MySqlConnection(conString); 
    MySqlCommand cmd = new MySqlCommand(query); 
    cmd.Parameters.AddWithValue("@stock_status", "Ready Stock"); 
    cmd.Parameters.AddWithValue("@status", "active"); 
    con.Open(); 
    MySqlDataAdapter da = new MySqlDataAdapter(); 
    cmd.Connection = con; 
    da.SelectCommand = cmd; 
    DataTable dt = new DataTable(); 
    da.Fill(dt); 
    ViewState("Data") = dt; 
    products.DataSource = dt; 
    products.DataBind(); 
    catHeading.Text = "Products In Ready Stock"; 
    itemCount.Text = dt.Rows.Count.ToString; 
    catSliderHeader.Text = "Categories"; 
    Page.Title = "Ready Stock Products" + " | BrandSTIK"; 
    con.Close(); 
} catch (Exception ex) { 
    Response.Write(ex); 
} 

Antwort

0

Ich denke, Sie haben nicht IsPostBack Eigenschaft in Page_Load Ereignis behandelt und die Listenansicht wird bei jedem Postback immer aktualisiert. Probieren Sie den folgenden Code aus.

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!this.IsPostBack) 
     { 
      try { 
    query = "SELECT * FROM products where stock_status = @stock_status and status = @status"; 
    string conString = ConfigurationManager.ConnectionStrings("conio").ConnectionString; 
    MySqlConnection con = new MySqlConnection(conString); 
    MySqlCommand cmd = new MySqlCommand(query); 
    cmd.Parameters.AddWithValue("@stock_status", "Ready Stock"); 
    cmd.Parameters.AddWithValue("@status", "active"); 
    con.Open(); 
    MySqlDataAdapter da = new MySqlDataAdapter(); 
    cmd.Connection = con; 
    da.SelectCommand = cmd; 
    DataTable dt = new DataTable(); 
    da.Fill(dt); 
    ViewState("Data") = dt; 
    products.DataSource = dt; 
    products.DataBind(); 
    catHeading.Text = "Products In Ready Stock"; 
    itemCount.Text = dt.Rows.Count.ToString; 
    catSliderHeader.Text = "Categories"; 
    Page.Title = "Ready Stock Products" + " | BrandSTIK"; 
    con.Close(); 
} catch (Exception ex) { 
    Response.Write(ex); 
} 
     } 
    } 
+0

Wenn ich PopulateProducts unter IsPostBack setzen dann wird es keine Daten bekommen, wenn Laden der Seite – SUN

+0

Können Sie Ihre page_load Ereigniscode schreiben? –

+0

Aktualisierter Seitenlade-Ereigniscode – SUN

Verwandte Themen