2016-06-01 7 views
1

hinzu, was ich geschehen möchte, ist, eine Paginierung zu haben, um einen sauberen Blick auf die Daten zu haben. hier ist mein HTML-Code für gridview:fügen Sie Paginierung zu gridview asp.net

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

und Code hinter:

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

irgendwie ist mein Code funktioniert nicht. Es hat die Seiten, aber wenn ich auf Seite 2 klicke, werden keine Daten angezeigt. Ich denke, es hat etwas zu tun, wie ich die Daten von der SQL bekommen. irgendwelche Tricks dazu?

+0

Setzen Sie den Datenbindungsabschnitt in eine Funktion und rufen Sie sie an zwei Stellen auf, einmal während des Ladens und einmal vor pageIndexChanging vor grid.DataBind(); –

+0

nicht genug, müssen Sie Quelle in der benutzerdefinierten Funktion –

+0

@ARUN festlegen, was fehlt mir? –

Antwort

1

i hinzugefügt

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

Statt dieser

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

den Laden following..In Seite zu laden verwenden, um die Datenquelle zu Sitzung, die Ihr für die Gridview verwendet haben und gehen Sie wie folgt wie,

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

und in Seite indexchanging Funktion ..

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

nicht große Daten in Sitzung speichern, verwenden Sie Viewstate [], Server-Speicher möglicherweise sehr schnell –

+0

ausgegangen @ARUN, gibt es ein Limit für den Serverspeicher ?? nur um zu klären? –

+0

Ja, hängt vom Server, manchmal von 2 GB bis 26 GB auf Google dedizierten Server, gibt es Paging und andere Mechanismen, um diese Grenze zu überschreiten, aber die Geschwindigkeit wird abnehmen, da die Festplatte für die Erstellung virtueller RAM verwendet wird. Einfach gesagt, es gibt ein Limit –