Foros del Web » Programando para Internet » ASPX (.net) »

Los datos de los combos del gridview se pierden al actualizar la grilla

Estas en el tema de Los datos de los combos del gridview se pierden al actualizar la grilla en el foro de ASPX (.net) en Foros del Web. Hola amigos, estoy trabajando con un gridview en modo editar, lo conecto a un sqldatasource donde tengo la conexión y la instrucción update y delete, ...
  #1 (permalink)  
Antiguo 17/03/2011, 16:46
 
Fecha de Ingreso: abril-2008
Mensajes: 82
Antigüedad: 16 años
Puntos: 0
Pregunta Los datos de los combos del gridview se pierden al actualizar la grilla

Hola amigos, estoy trabajando con un gridview en modo editar, lo conecto a un sqldatasource donde tengo la conexión y la instrucción update y delete, estas instrucciones resultan bien, el problema es que al oprimir el botón actualizar de la grilla, la pagina hace un postback, y los datos que estaban en combos (son tres), se pierden quedando el registro actualizado en los demás campos, pero con esos campos de los combos en blanco, he intentado varias cosas y ya no se qe hacer para recuperar esos datos de los combos.
Aquí envio los codigos.

Codigo grilla (solo con las columnas tipo combo):

<asp:GridView ID="GridDetalle" runat="server" AutoGenerateColumns="False"
CellPadding="4" EmptyDataText="Sin Registros coincidentes" Font-Names="Verdana"
Font-Size="X-Small" ForeColor="#333333" Height="16px"
style="width: 302px; margin-left: 0px" Width="234px"
DataSourceID="DtS_Detalle" DataKeyNames="Item">
<Columns>
<asp:TemplateField HeaderText="Bodega">
<EditItemTemplate>
<asp:DropDownList ID="cmb_bodega_grided" runat="server"
DataSourceID="DtSBodega" DataTextField="Bodega" DataValueField="Bodega"
Height="24px" Width="157px">
</asp:DropDownList>
<asp:RequiredFieldValidator ID="RFVBodegaed" runat="server"
ControlToValidate="cmb_bodega_grided" ErrorMessage="*"
ValidationGroup="Valida_Grid">
</asp:RequiredFieldValidator>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Bodega") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="150px" Height="15px" />

<asp:TemplateField HeaderText="Código Cuenta">
<EditItemTemplate>
<asp:DropDownList ID="cmb_cuenta_grided" runat="server"
DataSourceID="DtS_Cuenta" DataTextField="Descripcion" DataValueField="Cuenta"
Height="24px" Width="157px">
</asp:DropDownList>
<asp:RequiredFieldValidator ID="RFVCuentaed" runat="server"
ControlToValidate="cmb_cuenta_grided" ErrorMessage="*"
ValidationGroup="Valida_Grid">
</asp:RequiredFieldValidator>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label6" runat="server" Text='<%# Eval("Cuenta") %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Centro Costo">
<EditItemTemplate>
<asp:DropDownList ID="cmb_ccosto_grided" runat="server"
DataSourceID="DtS_Costo" DataTextField="Descripcion"
DataValueField="CentroCosto" Height="20px" Width="157px">
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label7" runat="server" Text='<%# Eval("CentroCosto") %>'>
</asp:Label>
</ItemTemplate>
<ItemStyle Width="200px" />
</asp:TemplateField>
</Columns>
<HeaderStyle BackColor="#669900" ForeColor="White" />
</asp:GridView>


Codigo sql datasource (solo con los parametros update):

<asp:SqlDataSource ID="DtS_Detalle" runat="server" ConnectionString="<%$ miConnectionString %>"
SelectCommand="SELECT Empresa, Entidad, TipoDocumento, Correlativo, Linea, Item, Descripcion, Bodega, Cantidad, Precio,
Subtotal, Cuenta, CentroCosto, Fecha FROM DocumentoDet1 WHERE (TipoDocumento = @TipoDocumento)
AND (Correlativo = @Correlativo) AND (YEAR(Fecha) = @Anio)"
UpdateCommand="UPDATE DocumentoDet1 SET Cantidad = @Cantidad, Precio = @Precio, Bodega = @Bodega, Cuenta = @Cuenta,
CentroCosto = @CentroCosto WHERE (Item = @Item) AND (TipoDocumento = @TipoDocumento)
AND (Correlativo = @Correlativo) AND (YEAR(Fecha) = @Anio)"

<UpdateParameters>
<asp:Parameter Name="Cantidad" />
<asp:Parameter Name="Precio" />
<asp:Parameter Name="Bodega" />
<asp:Parameter Name="Cuenta" />
<asp:Parameter Name="CentroCosto" />
<asp:Parameter Name="Item" />
<asp:ControlParameter ControlID="cmbtipodoc" Name="TipoDocumento" PropertyName="Text" />
<asp:ControlParameter ControlID="txt_corr" Name="Correlativo" PropertyName="Text" />
<asp:ControlParameter ControlID="txt_año" Name="Anio" PropertyName="Text" />
</UpdateParameters>
</asp:SqlDataSource>

Aca trato de pasarle la grilla a una variable de sesion, no se si estara bien, pero no se como traspasar cada fila
combo a una variable de sesion y despues devolverla en el postback...

Protected Sub GridDetalle_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridDetalle.RowDataBound
...
Session("Grid") = GridDetalle
....
End Sub


Aquí trato de devolver la grilla...

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Else
If GridDetalle.Rows.Count > 0 Then
GridDetalle = Session("Grid")
End If
End If
End Sub

Bueno, espero que me puedan ayudar con esto por favor, se los agradeceré mucho.Saludos.
  #2 (permalink)  
Antiguo 18/03/2011, 05:53
Avatar de mdavila  
Fecha de Ingreso: julio-2007
Ubicación: Montevideo (Uruguay)
Mensajes: 919
Antigüedad: 16 años, 9 meses
Puntos: 13
Respuesta: Los datos de los combos del gridview se pierden al actualizar la grilla

Carga los combos a mano por codigo o te sobrecarga la pagina ok.
Elimina los datasource del codigo asp.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then

'ACA CARGA LOS COMBOS LA PRIMERA Y UNICA VEZ
CargarCombos()

Else
If GridDetalle.Rows.Count > 0 Then
GridDetalle = Session("Grid")
End If
End If
End Sub

Public Sub CargarCombos()
'aca colocas el codigo para cargarlos

End Sub


Saludos.
__________________
Marcelo Davila.

:. En Ignorante te conviertes al no preguntar, el que pregunta se nutre... :.

Última edición por mdavila; 18/03/2011 a las 06:04
  #3 (permalink)  
Antiguo 18/03/2011, 14:44
 
Fecha de Ingreso: abril-2008
Mensajes: 82
Antigüedad: 16 años
Puntos: 0
Respuesta: Los datos de los combos del gridview se pierden al actualizar la grilla

mdavila, entiendo lo que dices, pero no sé como cargar los combos de la grilla con un procedimiento, ya que cuando los cargo con un procedimiento estos son controles individuales dropdownlist, las columnas combos de la grilla no se como puedo cargarlos con el procedimiento CargarCombos ya que no puedo agregarlos uno a uno escribiendo su valor en el codigo :
combo1.Items.Add("bodega1") ya que deben venir de una fuente de datos...
Gracias
  #4 (permalink)  
Antiguo 18/03/2011, 15:56
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 5 meses
Puntos: 8
Respuesta: Los datos de los combos del gridview se pierden al actualizar la grilla

en el evento databound de tu grid solo preguntas por el control combo contenido en la coleccion controls de tu cell[0] y listo.

Código C++:
Ver original
  1. protected void dgvCosto_ItemDataBound(object sender, DataGridItemEventArgs e)
  2.     {
  3.        
  4.  
  5.         if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
  6.         {
  7.             DropDownList ddlCosto = (DropDownList)e.Item.FindControl("cmb_ccosto_grided");
  8.             ddlCosto.DataSource = oDataSet.Tables[0];
  9.             ddlCosto.DataTextField = "Costo";
  10.             ddlCosto.DataValueField = "IdCosto";
  11.             ddlCosto.DataBind();
  12.             ddlCosto.SelectedValue = e.Item.Cells[5].Text;
  13.         }
  14.     }
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #5 (permalink)  
Antiguo 18/03/2011, 16:39
 
Fecha de Ingreso: abril-2008
Mensajes: 82
Antigüedad: 16 años
Puntos: 0
Respuesta: Los datos de los combos del gridview se pierden al actualizar la grilla

Ok, hago lo mismo para cada columna combo en el itemdatabound, lo voy a probar en vb.
Gracias

Etiquetas: combos, gridview, grilla, aspx
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:04.