Foros del Web » Programación para mayores de 30 ;) » .NET »

Ordenar y Editar un Datagrid

Estas en el tema de Ordenar y Editar un Datagrid en el foro de .NET en Foros del Web. Hola a todos, estoy comenzando a programar con ASP .NET y como no, ya llegan los primeros problemas. Estoy intentando editar un datagrid al que ...
  #1 (permalink)  
Antiguo 30/05/2006, 04:56
Avatar de fario13  
Fecha de Ingreso: junio-2004
Ubicación: Entre Madrid y Logroño
Mensajes: 411
Antigüedad: 19 años, 10 meses
Puntos: 7
Ordenar y Editar un Datagrid

Hola a todos, estoy comenzando a programar con ASP .NET y como no, ya llegan los primeros problemas. Estoy intentando editar un datagrid al que lehe puesto que ordene por alguna columna. Si pincho para que me ordene por la columna "nombre" me lo hace, pero al pinchar en editar el primer registro del datagrid, no me edita el primero resultante de la ordenacion, me edita el primero que habia. Os muestro el codigo por si me podeis ayudar:

<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="iso-8859-1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<script language="C#" runat="server">
String columnaOrdenacion="";
void Page_Load(Object sender, EventArgs e) {
if (!IsPostBack) {
if (columnaOrdenacion == "") {
columnaOrdenacion = "PaisNombre";
}
estableceDataBinding();
}
}
void estableceDataBinding(){
SqlConnection conexion =
new SqlConnection("server=127.0.0.1;database=prueba;ui d=userprueba;pwd=userprueba");
SqlDataAdapter comando =
new SqlDataAdapter("select * from Pais", conexion);
DataSet ds = new DataSet();
comando.Fill(ds, "Pais");
ds.Tables["Pais"].DefaultView.Sort=columnaOrdenacion;
tabla.DataSource = ds.Tables["Pais"].DefaultView;
tabla.DataBind();
}
void pulsadoEdicion(object Sender, DataGridCommandEventArgs e) {
tabla.SelectedIndex=-1;
tabla.EditItemIndex = e.Item.ItemIndex;
estableceDataBinding();
}
void pulsadoCancelacion(object Sender, DataGridCommandEventArgs e) {
tabla.EditItemIndex=-1;
tabla.SelectedIndex=-1;
estableceDataBinding();
}
void pulsadoActualizar(object Sender, DataGridCommandEventArgs e) {
SqlConnection conexion =
new SqlConnection("server=127.0.0.1;database=prueba;ui d=userprueba;pwd=userprueba");
String strComando;
String txtidioma=((TextBox)e.Item.Cells[1].Controls[0]).Text;
String txtnombre=((TextBox)e.Item.Cells[2].Controls[0]).Text;
strComando="UPDATE pais SET PaisIdioma='"+txtidioma+"', PaisNombre='"+txtnombre+"' WHERE PaisId=" + tabla.DataKeys[(int)e.Item.ItemIndex];
SqlCommand comando = new SqlCommand(strComando, conexion);
comando.Connection.Open();
comando.ExecuteNonQuery();
tabla.EditItemIndex=-1;
tabla.SelectedIndex=-1;
estableceDataBinding();
}
void pulsadoOrdenar(Object sender, DataGridSortCommandEventArgs e) {
columnaOrdenacion= (string)e.SortExpression;
estableceDataBinding();
}
</script>
<body>
<form runat="server">
<asp:DataGrid id="tabla" runat="server"
BackColor="#FFFF99"
BorderColor="black"
ShowFooter="false"
CellPadding=3
CellSpacing="0"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#FFCC33"

BorderWidth="1" GridLines="Both"
HeaderStyle-Font-Bold="True" AllowSorting="True"
OnSortCommand="pulsadoOrdenar" AutoGenerateColumns="False" OnEditCommand="pulsadoEdicion"
OnCancelCommand="pulsadoCancelacion" OnUpdateCommand="pulsadoActualizar"
DataKeyField="PaisId">
<Columns>
<asp:EditCommandColumn EditText="Editar" CancelText="Cancelar"
UpdateText="Actualizar" HeaderText="Edición"/>
<asp:BoundColumn DataField="PaisId" SortExpression="PaisId" HeaderText="Id"/>
<asp:BoundColumn DataField="PaisIdioma" SortExpression="PaisIdioma" HeaderText="Idioma"/>
<asp:BoundColumn DataField="PaisNombre" SortExpression="PaisNombre" HeaderText="Nombre"/>
</Columns>
</asp:DataGrid>
</form>
</body>
</html>
__________________
Bodegas La Rioja
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 12:55.