Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/03/2005, 10:27
Avatar de Sayra
Sayra
 
Fecha de Ingreso: diciembre-2004
Mensajes: 365
Antigüedad: 19 años, 5 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>