Te paso un ejemplo simplificado, la pagina html tiene un gridview asociado
al datasource y un formulario de filtro de datos, al presionar el boton de
filtro hago el filtro sobre el datasource.

El unico y gran problema que esto me esta generando es que al mostrarme en
el gridview solamente los datos filtrados, al presionar el comando Select,
me toma el rowID como si los datos no estuvieran filtrados.

 

Alguna idea sobre esto??

 

HTML

                 <asp:GridView ID="ProveedoresView" 

                                AllowPaging="True" 

                                PageSize="15" 

                                AutoGenerateColumns ="False" 

                                DataSourceID="ProveedoresDS" 

                                DataKeyNames="IDproveedoresOP"
runat="server" 

> 

                    <Columns >

                        <asp:BoundField DataField="IDProveedoresOP"
HeaderText="IDOP" Visible="False" >

                            <ItemStyle HorizontalAlign="Left" />

                        </asp:BoundField>

                        <asp:BoundField DataField="Empresa"
HeaderText="Empresa">

                            <ItemStyle HorizontalAlign="Left" />

                        </asp:BoundField>

                        <asp:BoundField DataField="proveedor"
HeaderText="Proveedor" SortExpression="proveedor">

                            <ItemStyle HorizontalAlign="Left" />

                        </asp:BoundField>

                        <asp:TemplateField HeaderText="Fecha">

                            <ItemStyle HorizontalAlign="Center" />

                            <ItemTemplate>

                                <asp:Label ID="lblFecha" runat="server"
Text='<%# Bind("Fecha", "{0:dd/MM/yyyy}") %>'></asp:Label>

                            </ItemTemplate>

                        </asp:TemplateField>

                        <asp:CommandField 

                                HeaderText= "Modif"

                                ButtonType="Image"

                                DeleteImageUrl ="~/images/iconos/Delete.gif"

                                ShowDeleteButton="True" 

                                SelectImageUrl="~/images/iconos/Edit.gif"

                                ShowSelectButton="True" 

                                SelectText="Modificar Item"

                                DeleteText="Eliminar registro"

                                Visible=false 

                                />

                    </Columns>

                  </asp:GridView>

 

   <asp:SqlDataSource ID="ProveedoresDS" runat="server" 

      ConnectionString="<%$ ConnectionStrings:CS %>"

      SelectCommand="SELECT *

                     FROM   ProveedoresOrdenPago "

                      >

    </asp:SqlDataSource>

 

Vb.net

 

    Protected Sub btnFiltrar_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles btnFiltrar.Click

 

        ProveedoresDS.FilterExpression = " proveedor like '%" &
txtFiltro.Text & "%'"

 

        Page.DataBind()

 

    End Sub

 

Protected Sub ProveedoresView_SelectedIndexChanging(ByVal sender As Object,
ByVal e As System.Web.UI.WebControls.GridViewSelectEventArgs) Handles
ProveedoresView.SelectedIndexChanging

 

        Dim intIDItemSelected As String

 

        intIDItemSelected =
ProveedoresView.Rows(e.NewSelectedIndex).Cells(0).Text.ToString

  Response.Redirect("modifproveedores.aspx?IDproveedor=" &
intIDItemSelected)

 

    End Sub

 

  _____  

From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Gabriel
Osorio
Sent: Thursday, May 24, 2007 1:49 PM
To: [email protected]
Subject: [puntonet] Problema con gridview filtrado

 

Me interesa.

 

Estas enlazando el control con un dataView? Algo como:

 

          private void BindData(DataTable dt, string filter)

          {

              DataView dv = new DataView(dt,"filter = '" + filter + "'",

                   "",DataViewRowState.CurrentRows);

              gridview.DataSource = dv;

              gridview.DataBind();

 

 

  _____  

From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Gabriel
Tobal
Sent: Thursday, May 24, 2007 11:04 AM
To: [email protected]
Subject: [puntonet] Problema con gridview filtrado

 

 

Hola a todos,

Tengo un gridview enlazado a un datasource, el gridview tiene también la
columna command para hacer update y delete. 

Al datasource le aplico un filtro para segmentar los registros obtenidos
según ciertos casos, pero al hacer un update, el evento obtiene el rowID de
la fila como si no hubiese realizado ningún filtro.

Alguien tiene alguna idea de como obtener el rowID correcto.

Adjunto el ej. del codigo de como obtengo el rowID
intIDItemSelected = ProveedoresView.Rows(e.NewSelectedIndex).Cells(0).
Text.ToString

Muchas gracias

 

Gabriel

 

 

Responder a