Bueno, pues creo que estoy en un predicamento, verán tengo un gridview que me muestra el resultado de una consulta a una base de datos, un botón que me agrega los elementos del gridview a otra base de datos.
Solo hay un detalle, al final del gridview tengo una columna que se llama "Calificacion", se supone que tengo que hacer que esa columna sea editable, pero el problema es que si coloco una columna del tipo "CommandField" con la opción de editar, actualizar y cancelar, la edición me la hace sobre la base de datos en la cual extraigo la información y no sobre la que tengo que vaciar la información.
Leí que haciendo la columna del Tipo TemplateField se podría, pero aún no logro hacerlo, quisiera y me pudieran ayudar y agradezco de antemano su ayuda n_n...
Les dejo el código de la alta de registros a mi base de datos xD... pero me falta poderle meter datos a mi ultima columna, es decir, lo de la columna editable que les comento, espero no haberlos revuelto con tanta palabra...
Código vb:
Ver originalImports System.Data.OleDb
Imports System.Data
Imports System.Data.SQLClient
Partial Class GVBase
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
Dim values As ArrayList = New ArrayList()
Dim conn As SqlConnection = New SqlConnection("server=myhost;database=DBPRUEBA;User ID=myuser;Password=mypass;Trusted_Connection=no")
Dim sql2 As String = "INSERT INTO Calificacion (rpe, nombre, cl_tipco, dscarea, Ingreso, Antiguedad, Calificacion) VALUES (@rpe, @nombre, @cl_tipco, @dscarea, @Ingreso, @Antiguedad, @Calificacion)"
conn.Open()
For Each fila As GridViewRow In GridView1.Rows
Using command As New SqlCommand(sql2, conn)
command.Parameters.AddWithValue("@rpe", fila.Cells(0).Text)
command.Parameters.AddWithValue("@nombre", fila.Cells(1).Text)
command.Parameters.AddWithValue("@cl_tipco", fila.Cells(2).Text)
command.Parameters.AddWithValue("@dscarea", fila.Cells(3).Text)
command.Parameters.AddWithValue("@Ingreso", fila.Cells(4).Text)
command.Parameters.AddWithValue("@Antiguedad", fila.Cells(5).Text)
command.Parameters.AddWithValue("@Calificacion", fila.Cells(6).Text)
command.ExecuteNonQuery()
End Using
Next
Catch ex As Exception
MsgBox(ex.Message.ToString)
MsgBox("no se pudo cargar a la base de datos")
End Try
End Sub
End Class
Este es el asp del Gridview:
Código ASP:
Ver original<%@ Page Language="VB" AutoEventWireup="false" CodeFile="GVBase.aspx.vb" Inherits="GVBase" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Página sin título</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Migrar" />
<asp:Button ID="Button2" runat="server" Text="VaciarBD" />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="rpe" HeaderText="rpe" SortExpression="rpe" />
<asp:BoundField DataField="nombre" HeaderText="nombre" SortExpression="nombre" />
<asp:BoundField DataField="cl_tipco" HeaderText="cl_tipco" SortExpression="cl_tipco" />
<asp:BoundField DataField="dscarea" HeaderText="dscarea" SortExpression="dscarea" />
<asp:BoundField DataField="Ingreso" HeaderText="Ingreso" ReadOnly="True" SortExpression="Ingreso" />
<asp:BoundField DataField="Antiguedad" HeaderText="Antiguedad" ReadOnly="True" SortExpression="Antiguedad" />
<asp:TemplateField ConvertEmptyStringToNull="False" HeaderText="Calificacion" SortExpression="Calificacion">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Calificacion") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString5 %>"
ProviderName="<%$ ConnectionStrings:ConnectionString5.ProviderName %>" SelectCommand="SELECT
[extractor].[dbo].[b_traba1].rpe, [extractor].[dbo].[b_traba1].nombre,
[extractor].[dbo].[b_traba1].cl_tipco, [extractor].[dbo].[c_a_resp].dscarea,
convert(varchar,[extractor].[dbo].[b_traba1].fe_ingre,103) AS Ingreso, convert(varchar,[extractor].[dbo].[b_traba1].fe_antre,103) AS Antiguedad,
SPACE(30) AS Calificacion
FROM
[extractor].[dbo].[b_traba1], [extractor].[dbo].[c_a_resp]
WHERE
[extractor].[dbo].[b_traba1].cl_sitla IS NULL
AND [extractor].[dbo].[b_traba1].area=[extractor].[dbo].[c_a_resp].area
AND [extractor].[dbo].[b_traba1].cl_zona=[extractor].[dbo].[c_a_resp].cl_zona
GROUP BY
[extractor].[dbo].[b_traba1].rpe, [extractor].[dbo].[b_traba1].nombre,
[extractor].[dbo].[b_traba1].cl_tipco, [extractor].[dbo].[c_a_resp].dscarea,
[extractor].[dbo].[b_traba1].fe_ingre, [extractor].[dbo].[b_traba1].fe_antre">
</asp:SqlDataSource>
</div>
</form>
</body>
</html>