ASP.NET - Enlazar un textbox a datos

 
Vista:

Enlazar un textbox a datos

Publicado por pableras (18 intervenciones) el 06/06/2007 18:53:11
Hola, qué tal ???

Trabajo con Visual Studio 2003, concretamente ASP.NET con C#.

Tengo un DataGrid "personalizado". En él se muestran los datos de una tabla concreta.
Cada fila del Datagrid tiene 3 textbox y un checkbox, donde se muestran los campos de la base de datos en esos controles.

Una vez que se muestran los datos, al estar en textboxs y checkboxs, puedo cambiar lo que sale escrito. Mi problema es cuando esos cambios los quiero actualizar en la base de datos.

Mi código es el siguiente:

private void Page_Load(object sender, System.EventArgs e)
{
cnn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\inetpub\\wwwroot\\esteesmisitio\\db\\esteesmisitio.mdb");
DataSet ds=new DataSet();
OleDbDataAdapter da=new OleDbDataAdapter("SELECT * FROM Paises",cnn);
OleDbCommandBuilder cb=new OleDbCommandBuilder(da);
da.Fill(ds,"Paises");
this.dtgPaises.DataSource=ds;
this.dtgPaises.DataMember="Paises";
this.dtgPaises.DataBind();
}

private void btnActualizar_Click(object sender, System.EventArgs e)
{
if (this.ds.HasChanges())
{
da.Update(ds,"Paises");
}
}

Pero este código no me guarda los datos, que modifico directamente en el datagrid, cuando pincho en el btnActualizar.

Qué falta ??? supongo que habrá que asignar cada textbox y el checkbox a un campo de la tabla del dataset no ?? cómo hago el binding con estos controles? cómo sería el código ??

Muchas graciasssss
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Enlazar un textbox a datos

Publicado por Javier Santamaria (312 intervenciones) el 07/06/2007 11:13:08
Hola Pableras,

Supongo que los textbox y el checkbox estn dentro de item templates dentro del datagrid. Pues cuando estas modificando el item template, pinchas en el textbox y te sale una flechita, pones el raton encima y te saldra editar databindings le das y te sale una ventana.
En esa ventana selecciona la propiedad que quieras y das a refresh schema (link abajo). Te cargara los campos de la base de datos y en la derecha se te activaran las listas. Selecciona el campo de la BD y selecciona y si lo necesitas alguna condicion (ej: que no se vea si es vacio). dale a aceptar y finaliza de editar el item template.

Espero qeu te sirva.

Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Enlazar un textbox a datos

Publicado por pableras (18 intervenciones) el 07/06/2007 12:44:47
Hola de nuevo ...

No sé exactamente dónde está lo que me dices. Efectivamente tengo lo de itemtemplate:

.....
<asp:TemplateColumn HeaderText="Nombre">
<ItemTemplate>
<asp:TextBox id="Textbox4" runat="server" CssClass="textbox" BorderStyle="None" MaxLength="50" Text='<%# DataBinder.Eval(Container.DataItem, "Nombre") %>'>
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
.....

He probado pinchando en el DataGrid y seleccionando Generador de Propiedades. Me voy a las columnas y en la de Nombre por ejemplo, no me aparece nada donde pueda poner el 'binding'.

Por otra parte me he metido en el código HTML y he probado(en el código del textbox que acabo de poner arriba) el buscar alguna propiedad, pero no veo nada relacionado.

Intento pinchar en el textbox dentro del Datagrid pero no me deja seleccionar el textbox. Se selecciona el Datagrid sólo. Si hago doble click se me va al código y me crea el evento del datagrid SelectedIndexChanged.

Cómo lo hago exáctamente ???

Graciasssss
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Enlazar un textbox a datos

Publicado por Javier Santamaria (312 intervenciones) el 08/06/2007 11:23:23
Hola pableras, cuando se selecciona el grid (al pinchar en el textbox) tienes que tener una flechita arriba a la derecha del grid. Pinchas esa flechita y te da las opciones del grid, selecciona "edit templates" (esta abajo) y te saldra la template con tu textbox. Si seleccionas el textbox te saldra otra flechita arriba la derecha de este. Le das y sale edit databindings. Pinchas ahi y te sale la ventana que te comente.

Para guardar los datos en la tabla lo tienes que hacer por codigo referenciando a esos textbox en los item template.

Eso se hace asi:

dim row as gridviewrow (declaras la variable fila)
for each row in gridview
dim text as textbox (declaras un textbox)
text = row.findcontrol("Nombre del textbox")
sentencia SQL para guardar los datos en la BD
next

Si tienes tres textbox y un checkbox pues creas un avariable para cada uno y las asignas antes de guardar los datos en la BD

Espero que te sirva.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar