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

Problema DataList

Estas en el tema de Problema DataList en el foro de .NET en Foros del Web. Hola a todos. Soy principiante en .NET, trabajo con C# i tengo un problema con un DataList. Éste Datalist lo utilizo para actualizar una tabla ...
  #1 (permalink)  
Antiguo 16/02/2004, 05:36
 
Fecha de Ingreso: febrero-2004
Mensajes: 67
Antigüedad: 20 años, 2 meses
Puntos: 0
Problema DataList

Hola a todos.

Soy principiante en .NET, trabajo con C# i tengo un problema con un DataList. Éste Datalist lo utilizo para actualizar una tabla de usuarios. El problema que tengo es que cuando modifico un campo (TextBox), se lanza el procedimiento UpdateComand llamando a una función pero cuando hago el:

string usuari=((TextBox)e.Item.FindControl("iusuari")).Te xt;

el valor que recoge usuari es el valor inicial que tenia el campo, no el nuevo que se ha introducido en el TextBox. Creo que el tema esta aqui ya que las conexiones estan bien y si cambio el codigo anterior por:

string usuari="hola";

y luego:

dsUsuaris1.Tables["USUARIS"].Rows[(int)e.Item.ItemIndex]["USUARI"] = ((TextBox)e.Item.FindControl("iusuari")).Text;

La base de datos se me actualiza bien.

Os pongo el código del datalist:

<asp:datalist id="DLUsuaris" style="Z-INDEX: 102; LEFT: 7px; POSITION: absolute; TOP: 177px" runat="server" DataKeyField="USUARI" Height="209px" Width="173px" OnEditCommand="DLUsuaris_EditCommand" OnItemCommand="DLUsuaris_ItemCommand" OnUpdateCommand="DLUsuaris_UpdateCommand">
<HeaderTemplate>
<table border="0" width="650">
</HeaderTemplate>
<SelectedItemTemplate>
<FONT face="Arial" color="#ff3333"><STRONG></STRONG></FONT>
</SelectedItemTemplate>
<EditItemTemplate>
<tr>
<td class="UsuarisRepeater"><%# DataBinder.Eval(Container.DataItem, "USUARI")%></td>
<td class="UsuarisRepeater"><%# DataBinder.Eval(Container.DataItem, "NOM")%></td>
<td>
<asp:LinkButton id="Linkbutton1" runat="server" CommandName="recollir">
<img border="0" src="../img/editarAmunt.gif"></asp:LinkButton></td>
</tr>
<tr>
<td class="UsuarisRepeater" colspan="2">
USUARI:
<asp:TextBox class="inputForm" id="iusuari" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "USUARI")%>'/>
<asp:TextBox class="inputForm" id="inom" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "NOM")%>' />
<asp:TextBox class="inputForm" id="imail" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "MAIL")%>' />
<asp:TextBox class="inputForm" id="iclau" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "CLAU")%>' />
</td>
</tr>
<tr>
<td colspan="2"><div align="right">
<asp:LinkButton Text="Desar canvis" Runat="server" class="botoForm" CommandName="update"/></div>
</td>
</tr>
</EditItemTemplate>
<ItemTemplate>
<tr>
<td class="UsuarisRepeater"><%# DataBinder.Eval(Container.DataItem, "USUARI")%></td>
<td class="UsuarisRepeater"><%# DataBinder.Eval(Container.DataItem, "NOM")%></td>
<td>
<asp:LinkButton Runat="server" ID="imagebutton" CommandName="edit">
<img border="0" src="../img/editar.gif"></asp:LinkButton></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:datalist>

Bueno, a ver como veis el tema.
Gracias de antemano.
  #2 (permalink)  
Antiguo 16/02/2004, 12:02
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
Hola y bienvenido...

Cita:
el valor que recoge usuari es el valor inicial que tenia el campo, no el nuevo que se ha introducido en el TextBox
Cuando haces tu update vuelves a llenar tu datalist ?? porque en este caso cuando haces un update y quieres ver los cambios tienes que volver a cargar tu data list.

Si quieres de todas formas manda el codebehind que tienes para hacer tu update y darnos una mejor idea de lo que estas haciendo.

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

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 16/02/2004, 12:09
 
Fecha de Ingreso: febrero-2004
Mensajes: 67
Antigüedad: 20 años, 2 meses
Puntos: 0
Aqui os mando el codebehind

Antes de nada agradecer tu respuesta. Aqui tienes el código:

public void DLUsuaris_UpdateCommand(object Sender, DataListCommandEventArgs e)
{
sqlConnection1.Open();
string usu=((TextBox)e.Item.FindControl("eusuari")).Text;
bool s_gusuaris=((CheckBox)e.Item.FindControl("gusuaris ")).Checked;
dsUsuaris1.Tables["GUSUARIS"].Rows[(int)e.Item.ItemIndex]["GUSUARIS"]= s_gusuaris;
dsUsuaris1.Tables["USUARIS"].Rows[(int)e.Item.ItemIndex]["USUARI"] = usu;
dsUsuaris1.Tables["USUARIS"].Rows[(int)e.Item.ItemIndex]["NOM"] = ((TextBox)e.Item.FindControl("enom")).Text;
dsUsuaris1.Tables["USUARIS"].Rows[(int)e.Item.ItemIndex]["MAIL"] = ((TextBox)e.Item.FindControl("email")).Text;
sqlDataAdapter2.Update(dsUsuaris1,"USUARIS");
sqlDataAdapter2.Fill(dsUsuaris1,"USUARIS");
DLUsuaris.DataBind();
DLUsuaris.EditItemIndex = -1;
sqlConnection1.Close();
}

Como digo todavia soy novato en .net y me cuesta entender como va todo esto de los dataset, sqladapter, etc...

He comprobado que si en el page load pongo lo siguiente:

if (!IsPostBack){
DLUsuaris.DataSource=dsUsuaris1.Tables["USUARIS"];
DLUsuaris.DataBind();
}

Veo los cambios realizados en el mismo EditTemplate, pero en la base de datos no se me actualizan. No bastaria con el sqlAdapter2.Update() para hcaer 'commit' en la bd ?

Gracias de nuevo.
  #4 (permalink)  
Antiguo 16/02/2004, 12:40
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
Ok.... voy a tratar de ser lo mas breve, para empezar.. si estas usando un dataset como estas trabajando por default con datos desconectados no es necesario que hagas ésto:

Cita:
sqlConnection1.Open();
A contrario de un sqldatareader que sí trabaja con datos conectados... ,

Por lo que veo creo que estas utilizando sqldataadapter y sqlconnection directamente del toolbox... si vas empezando con Net te sugiero que lo hagas todo por código para despues hacerlo con las herramientas visuales que te ofrece VS.

De todas formas te mando un buen link que te va a servir bastante...el unico detalle es que está en VBNet pero veras que no es muy dificil pasarlo a C#... (sirve que practicas para que sepas manejar los dos ) si algo no sabes como convertirlo... te podemos ayudar

http://www.ondotnet.com/pub/a/dotnet.../datalist.html


Suerte
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 04:56.