2016-09-29 76 views
0

我正在从事电子商务网站。我已经使用Listview控件来填充产品。在一页上,我展示了36种产品。现在,如果我想使用分页转到下一页,那么它不起作用。页面只停留在第一页。我试过2个解决方案。Listview中的Datapager不能正常工作

寻呼码

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); 
     } 
    } 
} 

我有很多的CheckBoxList到过滤器列表视图数据,以及。所以在这里,我记住如果用户是在应用一些过滤器&如果行< 36那么它应该显示从页1的结果。在我的下面的代码分页工作正常,但是当上面提到的情况发生时,它显示空白页。

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

更新页面加载

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

我想你还没有处理IsPostBack属性在Page_Load事件和列表视图在每个回发得到刷新。尝试下面的代码。

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

如果我把下的IsPostBack然后PopulateProducts它是没有得到数据时,页面加载 – SUN

+0

您可以发布您的Page_Load事件代码? –

+0

Upadated pageload event code – SUN