
DataTable + GridView
Publicado por Tony (5 intervenciones) el 17/06/2016 15:31:22
Saludos, estoy trabajando en una aplicación asp.net desarrollada en C#, en donde tengo una pagina que carga varios registros en un datagridview.
Inicialmente el grid lo cargo se carga con 18 registros, para lo cual utilizo el siguiente código en el evento Page_Load:
La definición de dtProveedor es la siguiente:
static DataTable dtProveedor = new DataTable();
Tengo luego un botón que me vuelve a cargar el datatable con un filtro
En el DataGrid tengo un ButtonField en donde capturo el indice de la fila para posteriormente redireccionar con los datos del registro
Al aplicar el filtro observo que mi datatable tiene por ejemplo 7 registro, los cuales se visualizan correctamente en la pagina, pero al hacer click nuevamente en el ButtonField inmediatamente el datatable vuelve a cargarse con los 18 registros iniciales, lo cual origina que el indice seleccionad desde el Button no sea el registro deseado.
¿Qué es lo que estoy omitiendo o haciendo mal, y cómo puedo solucionar este inconveniente?
Muchas gracias de antemano.

Inicialmente el grid lo cargo se carga con 18 registros, para lo cual utilizo el siguiente código en el evento Page_Load:
1
2
3
4
5
6
7
8
9
10
private void LoadData()
{
using (clsProveedor cPrv = new clsProveedor())
{
dtProveedor = cPrv.ListaProveedores();
}
this.grvProveedor.DataSource = dtProveedor;
this.grvProveedor.DataBind();
}
La definición de dtProveedor es la siguiente:
static DataTable dtProveedor = new DataTable();
Tengo luego un botón que me vuelve a cargar el datatable con un filtro
1
2
3
4
5
6
7
8
9
10
11
12
13
14
protected void imgFiltro_Click(object sender, ImageClickEventArgs e)
{
if (txtFiltro.Text.Trim().Length > 0)
{
using (clsProveedor cProv = new clsProveedor())
{
dtProveedor = cProv.ListaProveedores(txtFiltro.Text.Trim());
}
this.grvProveedor.DataSource = null;
this.grvProveedor.DataSource = dtProveedor;
this.grvProveedor.DataBind();
}
}
En el DataGrid tengo un ButtonField en donde capturo el indice de la fila para posteriormente redireccionar con los datos del registro
1
2
3
4
5
6
7
8
9
10
protected void grvProveedor_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "ModificarProveedor")
{
int IndProveedor = Convert.ToInt32(e.CommandArgument);
Response.Redirect("ModificarProveedor.aspx?ProveedorId=" + grvProveedor.Rows[IndProveedor].Cells[1].Text);
}
}
Al aplicar el filtro observo que mi datatable tiene por ejemplo 7 registro, los cuales se visualizan correctamente en la pagina, pero al hacer click nuevamente en el ButtonField inmediatamente el datatable vuelve a cargarse con los 18 registros iniciales, lo cual origina que el indice seleccionad desde el Button no sea el registro deseado.
¿Qué es lo que estoy omitiendo o haciendo mal, y cómo puedo solucionar este inconveniente?
Muchas gracias de antemano.

Valora esta pregunta


0