添加分页到gridview asp.net

问题描述:

我想要发生的是有一个分页,有一个清晰的数据看看。 这里是我的GridView的HTML代码:添加分页到gridview asp.net

<asp:gridview ID = "grid" runat="server" AllowPaging="true" OnPageIndexChanging="gdview_PageIndexChanging"> 

和后面的代码:

public static string cs = "Server=PAULO;Database=ShoppingCartDB;Integrated Security=true"; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Session["New"] != null) 
     { 
      if (!IsPostBack) 
      { 
       SqlConnection con = new SqlConnection(cs); 
       con.Open(); 

       string sql = "SELECT * FROM CustomerDetails Where CustomerName = '" + Session["New"] +"'"; 
       SqlDataAdapter da = new SqlDataAdapter(sql, con); 
       DataTable dt = new DataTable(); 
       da.Fill(dt); 




       Label2.Text += Session["New"].ToString(); 
       linkLogout.Visible = true; 
       //linkOrderHistory.Visible = true; 
       Label2.Visible = true; 
       linkViewProfile.Visible = true; 
       grid.DataSource = dt; 
       grid.DataBind(); 
      } 
     } 

    } 
    private void CustomBindData() 
    { 
     SqlConnection con = new SqlConnection(cs); 
     con.Open(); 

     string sql = "SELECT * FROM CustomerDetails Where CustomerName = '" + Session["New"] + "'"; 
     SqlDataAdapter da = new SqlDataAdapter(sql, con); 
     DataTable dt = new DataTable(); 
     da.Fill(dt); 
    } 
    protected void gdview_PageIndexChanging(object sender, GridViewPageEventArgs e) 
    { 
     CustomBindData(); 
     grid.PageIndex = e.NewPageIndex; 
     grid.DataBind(); 
    } 

不知我的代码不能正常工作。它有页面,但是当我点击页面2时,没有数据显示。我认为它有什么关于如何从sql中获取数据。对此有何技巧?

+0

将数据绑定部分放入一个函数中,并在两个地方调用它,一个是在load中,另一个是在grid.DataBind()之前的pageIndexChanging。 –

+0

还不够,你需要在自定义函数中设置源码 –

+0

@ARUN我在想什么? –

我加了

private void CustomBindData() 
    { 
     SqlConnection con = new SqlConnection(cs); 
     con.Open(); 

     string sql = "SELECT * FROM CustomerDetails Where CustomerName = '" + Session["New"] + "'"; 
     SqlDataAdapter da = new SqlDataAdapter(sql, con); 
     DataTable dt = new DataTable(); 
     da.Fill(dt); 

     grid.DataSource = dt; 
     grid.DataBind(); 
    } 
    protected void gdview_PageIndexChanging(object sender, GridViewPageEventArgs e) 
    { 
     CustomBindData(); 
     grid.PageIndex = e.NewPageIndex; 
     grid.DataBind(); 
    } 

取而代之的是

protected void gdview_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    grid.PageIndex = e.NewPageIndex; 
    grid.DataBind(); 
} 

使用following..In页面加载储存数据源到会话,你的使用为GridView并执行以下操作一样,

Session[gridviewsouce] = dt; //dataTable which you were using in page_load 

和页换肤功能..

protected void gdview_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    grid.PageIndex = e.NewPageIndex; 
    DataTabel dt = Session[gridviewsouce] as DataTable; 
    grid.DataSource = dt; 
    grid.DataBind(); 
} 
+0

不会存储会话中的大量数据,使用viewstate [],服务器内存可能会非常快地跑出来 –

+0

@ARUN,服务器内存是否有任何限制?只是为了澄清? –

+0

是的,取决于服务器,有些时候从谷歌专用服务器上的2GB到26GB,有分页和其他机制来超过这个限制,但速度会降低,因为硬盘被用来制作虚拟内存。简单地说,有限制 –