2011-10-30 21 views
11

he creado:La GridView 'GridView1' PageIndexChanging evento disparado que no fue manejado

  • una página principal y una página de contenido llamado detalle.
  • Evento de clic de botón, mostrando datos en la vista de cuadrícula.
  • En la vista de cuadrícula, las columnas se autogeneran.
  • Quería mostrar 11 columnas en la vista de cuadrícula, pero es más que el tamaño de la página .

¿Qué hacer para esto?

He creado el archivo hell de sql para el código de conexión de la base de datos y he llamado a ese método, no estoy usando sqldatasource para la conexión.

Cuando tratando de hacer la paginación, consiguiendo error:

El GridView 'GridView1' PageIndexChanging evento disparado que no fue manejado.

Respuesta

20

Debe declarar un método en el código que maneja el evento PageIndexChanging.

Algo similar a esto:

protected void GridView1_PageIndexChanging (object sender, GridViewPageEventArgs e) 
{ 
    GridView1.PageIndex = e.NewPageIndex; 
    bindGridView(); //bindgridview will get the data source and bind it again 
} 

private void bindGridView() 
{ 
    GridView1.DataSource=getData(); 
    GridView1.DataBind(); 
} 

Proporcionar código de ejemplo:

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
    { 
     GridView1.PageIndex = e.NewPageIndex; 
     bindGridView(); //bindgridview will get the data source and bind it again 
    } 

    protected void Page_Load(object sender , EventArgs e) 
    { 
     if(!IsPostBack) 
     bindGridView(); 

    } 
    //this is some sample data 
    private void bindGridView() 
    { 
     DataTable t = new DataTable(); 
     t.Columns.Add("Col1"); 
     t.Columns.Add("Col2"); 
     DataRow r = null; 
     for (int i = 0; i < 25; i++) 
     { 
      r = t.NewRow(); 
      r.ItemArray = new object[] { "Val" + i, " Another " + i }; 
      t.Rows.Add(r); 
     } 
     GridView1.DataSource = t; 
     GridView1.DataBind(); 
    } 

Y este es el marcado:

<asp:GridView OnPageIndexChanging="GridView1_PageIndexChanging" AllowPaging="true" PageSize="10" ID="GridView1" runat="server" AutoGenerateColumns="true"> 

produce esto:

enter image description here

+0

ya he hecho para que pero ningún efecto. protected void GridView1_PageIndexChanging (remitente del objeto, GridViewPageEventArgs e) { // string s1 = "select * from master"; // DataSet ds = SqlHelper.GetDataSet (CommandType.Text, s1, "master"); // DataTable table = ds.Tables ["master"]; // if (table.Rows.Count> 0) // { // GridView1.DataSource = ds; // GridView1.DataBind(); //} GridView1.PageIndex = e.NewPageIndex; // Enlazar grilla GridView1.DataBind(); } y aspx archivo –

+0

@JuiTest publique este código en su respuesta, no como un comentario. Es más útil verlo allí. – Icarus

+0

No puedo responder por sí mismo. –

0

Para arreglar esto, tuve que echar un vistazo más de cerca a mi fuente de datos y mis claves de datos. Tengo un conjunto de registros devueltos por SQL Server y lo que estaba haciendo es vincularlos a un POCO. Esta clase tenía varias propiedades públicas de tipo Integer. Estos enteros fueron mis claves de datos en la grilla. Reemplacé su tipo con una cadena en lugar de eludir el problema de la conversión.

+0

Esto probablemente habría hecho un mejor comentario. No agrega mucho a la respuesta aceptada. – David

1

Ésta es la respuesta final:

Imports System.Collections.Generic ' library 

Protected Sub grdEmployees_PageIndexChanging1(ByVal sender As Object, ByVal e As 
System.Web.UI.WebControls.GridViewPageEventArgs) Handles grdEmployees.PageIndexChanging 
    grdEmployees.PageIndex = e.NewPageIndex 
    LoadEmployeeList() 'FUNCTION FOR DATASET 
    grdEmployees.DataBind() 

End Sub 
2

para paginación puede utilizar para este OnPageIndexChanging ....

Por ejemplo

usted tiene que utilizar OnPageIndexChanging = "gvdetails_PageIndexChanging" en su GridView ...

Tiene que escribir debajo del código en el evento en el código detrás de lik e

protected void gvdetails_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    gvdetails.PageIndex = e.NewPageIndex; 
    BindData(); 
} 

Para obtener más información, puede consultar el siguiente enlace aquí Estoy utilizando la página Cambio de índice en mi artículo ...

Here I use PageIndexChange

espero que esto le ayuda .... compartirlo con los demás ... Gracias!

0

sólo tiene que añadir esto a su código:

protected void GridViewTrsEmail_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    GridViewTrsEmail.PageIndex = e.NewPageIndex; 
    GridViewTrsEmail.DataBind(); 


} 
Cuestiones relacionadas