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

Datagrid se me comporta extraño

Estas en el tema de Datagrid se me comporta extraño en el foro de .NET en Foros del Web. Veran realize una aplicacion con la cual puedo insertar, editar y eliminar registros de una tabla, los mismos los visulaizo en un datagrid pero me ...
  #1 (permalink)  
Antiguo 28/03/2005, 10:27
Avatar de Sayra  
Fecha de Ingreso: diciembre-2004
Mensajes: 365
Antigüedad: 19 años, 4 meses
Puntos: 1
Datagrid se me comporta extraño

Veran realize una aplicacion con la cual puedo insertar, editar y eliminar registros de una tabla, los mismos los visulaizo en un datagrid

pero me pasa lo siguiente:
1.- Cuando inserto nuevos registros me muestra en el datagrid los registros viejos y el nuevo agregado, eso esta bien que lo haga

2.-Cuando le doy a editar en lugar de mostrarme las casillar con texbox y drops, me borra el grid, eso esta muy mal

3.-Cuando le doy eliminar, elimina el registro pero no me actualiza en el grid

estoy

Abajo pongo mi codigo para ver si ustedes ven porque se comporta asi
<%@ Import Namespace="Rainbow.Configuration" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Control Language="VB" AutoEventWireup="true" Codebehind="AdminCargo.ascx.cs" Inherits="Rainbow.DesktopModules.AdminFSE.AdminCar go" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" debug = true%>
<HTML>
<HEAD>
<script language="VB" runat="server">


Sub Page_Load(Src As Object, E As EventArgs)

If Not IsPostBack Then
BindGrid()
End If


End Sub


Sub buttonAdd_Click(Sender As Object, E As EventArgs)
Message.InnerHtml = ""
Dim DS As DataSet
Dim MyCommand As SqlCommand

Dim InsertCmd As String = "insert into Cargo_Solicitado (Nombre_Cargo) values (@Nombre_Cargo)"

MyCommand = New SqlCommand(InsertCmd, PortalSettings.SqlConnectionString)


MyCommand.Parameters.Add(New SqlParameter("@Nombre_Cargo", SqlDbType.NVarChar, 40))
MyCommand.Parameters("@Nombre_Cargo").Value = textBoxCargo.Text

MyCommand.Connection.Open()

Try
MyCommand.ExecuteNonQuery()
Message.InnerHtml = "<b>El registro fue creado exitosamente</b><br>"
Catch Exp As SQLException
If Exp.Number = 2627
Message.InnerHtml = "ERROR: A record already exists with the same primary key"
Else
Message.InnerHtml = "ERROR: El registro no puede crearse, por favor revise los campos para ver si fueron rellenados correctamente"
End If
Message.Style("color") = "red"
End Try

MyCommand.Connection.Close()
BindGrid()

End Sub

Sub MyDataGrid_Delete(Sender As Object, E As DataGridCommandEventArgs)

Dim MyCommand As SqlCommand
Dim DeleteCmd As String = "DELETE from Cargo_Solicitado where CargoID = @CargoID"

MyCommand = New SqlCommand(DeleteCmd, PortalSettings.SqlConnectionString)
MyCommand.Parameters.Add(New SqlParameter("@CargoID", SqlDbType.NVarChar, 11))
MyCommand.Parameters("@CargoID").Value = MyDataGrid.DataKeys(CInt(E.Item.ItemIndex))

MyCommand.Connection.Open()

Try
MyCommand.ExecuteNonQuery()
Message.InnerHtml = "<b>registro Eliminado</b><br>"
Catch Exc As SQLException
Message.InnerHtml = "ERROR:El registro no puede ser eliminado"
Message.Style("color") = "red"
End Try

MyCommand.Connection.Close()
BindGrid()
End Sub


Sub MyDataGrid_Edit(Sender As Object, E As DataGridCommandEventArgs)
MyDataGrid.EditItemIndex = CInt(E.Item.ItemIndex)
BindGrid()
End Sub

Sub MyDataGrid_Cancel(Sender As Object, E As DataGridCommandEventArgs)
MyDataGrid.EditItemIndex = -1
BindGrid()
End Sub

Sub MyDataGrid_Update(Sender As Object, E As DataGridCommandEventArgs)

Dim DS As DataSet
Dim MyCommand As SqlCommand

Dim UpdateCmd As String = "UPDATE Cargo_Solicitado SET Nombre_Cargo = @Nombre_Cargo WHERE CargoID = @CargoID"

MyCommand = New SqlCommand(UpdateCmd, PortalSettings.SqlConnectionString)

MyCommand.Parameters.Add(New SqlParameter("@CargoID", SqlDbType.NVarChar, 11))
MyCommand.Parameters.Add(New SqlParameter("@Nombre_Cargo", SqlDbType.NVarChar, 40))

MyCommand.Parameters("@CargoID").Value = MyDataGrid.DataKeys(CInt(E.Item.ItemIndex))

Dim TexboxW as TextBox
TexboxW= E.Item.FindControl("edit_Nombre_Cargo")
MyCommand.Parameters("@Nombre_Cargo").Value = TexboxW.Text


MyCommand.Connection.Open()

Try
MyCommand.ExecuteNonQuery()
Message.InnerHtml = "<b>Registro actualizado</b><br>"
MyDataGrid.EditItemIndex = -1
Catch Exp As SqlException
If Exp.Number = 2627
Message.InnerHtml = "ERROR: ya existe un registro con la misma clave principal"
Else
Message.InnerHtml = "ERROR: no se pudo actualizar el registro, compruebe que los campos están rellenos correctamente"
End If
Message.Style("color") = "red"
End Try

MyCommand.Connection.Close()

BindGrid()

End Sub



Sub BindGrid()

Dim DS As DataSet
Dim MyCommand As SqlDataAdapter
Dim strSql As String = "Select CargoID, Nombre_Cargo from Cargo_Solicitado"

MyCommand = new SqlDataAdapter(strSql, PortalSettings.SqlConnectionString)

DS = new DataSet()
MyCommand.Fill(DS, "Cargo_Solicitado")

MyDataGrid.DataSource=DS.Tables("Cargo_Solicitado" ).DefaultView
MyDataGrid.DataBind()
End Sub

</script>
</HEAD>
<body style="FONT: 10pt verdana">
<form id="Form1">
<h3><font face="Verdana"> Actualizar Tabla Cargo Solicitado</font></h3>
<table>
<TR>
<TD>Cargo</TD>
<tr>
<td><asp:textbox id="textBoxCargo" runat="server"></asp:textbox></td>
<td><asp:requiredfieldvalidator id="RequiredFieldValidator1" runat="server" Width="80px" ControlToValidate="textBoxCargo"
ErrorMessage="Cargo" Display="Dynamic">*</asp:requiredfieldvalidator>
<asp:regularexpressionvalidator id="Regularexpressionvalidator1" Font-Name="verdana" Font-Size="8" runat="server"
Width="100px" ControlToValidate="textBoxCargo" ErrorMessage="*Solo puede introducir letras" ValidationExpression="([a-zA-Z]|ñ|Ñ)*"></asp:regularexpressionvalidator></td>
</TD>
</tr>
<tr>
</tr>
</table>
<table>
<tr>
<td><input id="Submit1" type="submit" value="Agregar" name="Submit1" runat="server" OnServerClick="buttonAdd_Click"></td>
</tr>
<tr>
<span id="Message" runat="server" EnableViewState="false"></span>
<ASP:DATAGRID id="MyDataGrid" runat="server" AutoGenerateColumns="False" HeaderStyle-BackColor="#aaaadd"
Font-Size="8pt" Font-Name="Verdana" BorderColor="Black" DataKeyField="CargoID" OnUpdateCommand="MyDataGrid_Update"
OnCancelCommand="MyDataGrid_Cancel" OnEditCommand="MyDataGrid_Edit" CellPadding="3" Width="800px"
BackColor="#CCCCFF" Font-Names="Verdana" OnDeleteCommand="MyDataGrid_Delete" EnableViewState="False"
HorizontalAlign="Left">
<HeaderStyle BackColor="#AAAADD"></HeaderStyle>
<Columns>
<asp:ButtonColumn Text="Eliminar" CommandName="Delete"></asp:ButtonColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Actualizar" CancelText="Cancelar" EditText="Editar">
<ItemStyle Wrap="False"></ItemStyle>
</asp:EditCommandColumn>
<asp:BoundColumn DataField="CargoID" SortExpression="CargoID" ReadOnly="True" HeaderText="CargoID">
<ItemStyle Wrap="False"></ItemStyle>
</asp:BoundColumn>
<asp:TemplateColumn SortExpression="Nombre_Cargo" HeaderText="Nombre_Cargo">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Nombre_Cargo") %>' ID="Label6" NAME="Label6"/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="edit_Nombre_Cargo" Text='<%# DataBinder.Eval(Container.DataItem, "Nombre_Cargo") %>'/>
<asp:requiredfieldvalidator id="Requiredfieldvalidator2" runat="server" Width="80px" ControlToValidate="edit_Nombre_Cargo"
ErrorMessage="Ciudad" Display="Static">*</asp:requiredfieldvalidator>
<asp:regularexpressionvalidator id="Regularexpressionvalidator2" Font-Name="verdana" Font-Size="8" runat="server"
Width="100px" ControlToValidate="edit_Nombre_Cargo" ErrorMessage="*Solo puede introducir letras" ValidationExpression="([a-zA-Z]|ñ|Ñ)*"></asp:regularexpressionvalidator>
</EditItemTemplate>
</asp:TemplateColumn>
</Columns>
</ASP:DATAGRID>
<asp:label id="lblSelections" Font-Size="10px" Font-Name="Verdana" Runat="server"></asp:label>
</tr>
</table>
</form>
</body>
</HTML>
  #2 (permalink)  
Antiguo 28/03/2005, 10:46
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Creo que para empezar cuando editas tu grid no aparece nada porque no estás guardando el state.

Colocalo de ésta forma:
Cita:
<ASP:DATAGRID id="MyDataGrid" runat="server" AutoGenerateColumns="False" HeaderStyle-BackColor="#aaaadd"
Font-Size="8pt" Font-Name="Verdana" BorderColor="Black" DataKeyField="CargoID" OnUpdateCommand="MyDataGrid_Update"
OnCancelCommand="MyDataGrid_Cancel" OnEditCommand="MyDataGrid_Edit" CellPadding="3" Width="800px"
BackColor="#CCCCFF" Font-Names="Verdana" OnDeleteCommand="MyDataGrid_Delete" EnableViewState="true"
HorizontalAlign="Left">
ahora:

Cita:
Cuando le doy eliminar, elimina el registro pero no me actualiza en el grid
recuerda hacer nuevamente el binding de tu datagrid para que te cargue los valores nuevos

Checalo y me avisas.

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 28/03/2005, 12:19
Avatar de Sayra  
Fecha de Ingreso: diciembre-2004
Mensajes: 365
Antigüedad: 19 años, 4 meses
Puntos: 1
Ahora si pos si funciona, muchas Gracias RootK.

Ahh el otro dia me corregiste que era RootK y No Root. Y por cierto

que significa la K de RootK?
  #4 (permalink)  
Antiguo 28/03/2005, 12:27
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
que significa la K de RootK?
Jeje, eres de las pocas personas que me han preguntado eso, pero bueno, ya que se dió la ocasión la "K" es por el vocalista de Nirvana Kurt Cobain , es que me gustaba mucho ese grupo...bueno me sigue gustando.. lástima que ya no está el buen Kurt

Y para ser sincero mi nick verdadero con el que soy conocido por otros lados no es RootK... (curioso no..?? jeje) pero ese es otro tema , ya que precisamente no lo ocupo para no quemarlo...
  #5 (permalink)  
Antiguo 28/03/2005, 12:36
Avatar de Sayra  
Fecha de Ingreso: diciembre-2004
Mensajes: 365
Antigüedad: 19 años, 4 meses
Puntos: 1
Ahh lo que pasa es que soy un poquito curiosa

Pero a mi se me hizo poco comun porque yo habia visto era Root asi, lo que pasa es que a la par con .net estoy aprendiendo linux tambien, por eso tambien me llamo la atencion.
  #6 (permalink)  
Antiguo 28/03/2005, 12:42
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
porque yo habia visto era Root asi,
De hecho el root lo saque precisamente por cuestiones de Unix.. jeje y como dices que estás aprendiendo un poco de Linux sabrás a lo que me refiero
  #7 (permalink)  
Antiguo 28/03/2005, 12:49
Avatar de Sayra  
Fecha de Ingreso: diciembre-2004
Mensajes: 365
Antigüedad: 19 años, 4 meses
Puntos: 1
Si tu eres el superusuario, el que todo lo puede


  #8 (permalink)  
Antiguo 28/03/2005, 12:54
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
Si tu eres el superusuario, el que todo lo puede
exacto..!! aunque quiero aclarar que no me siento como el que todo lo puede jeje... es solo cuestión de gusto el nick...
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 11:13.