Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/03/2011, 16:46
solangel
 
Fecha de Ingreso: abril-2008
Mensajes: 82
Antigüedad: 16 años, 6 meses
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.