PDA

Ver la versión completa : C# consulta



Leia
18-01-2016, 08:22 PM
Hola!

Bueno estaba haciendo mi proyecto final y decidí usar c#. La cual ahora tengo un problema que hace un par de días estoy con eso D:
La cosa es la siguiente:
Es el clásico ABM, el problema que tengo es con el modificar. A la hora de hacerlo traigo los datos del usuario a modificar y los populo en todos los campos, luego esos campos los puedo cambiar con otra información y al darle click en Modificar se modificarían los datos en la base de datos... pero no... me di cuenta que jamás se actualizan esos campos, sino que por más que cambie la info de dichos campos al mandarlos a la base de datos siempre mando la data que fue populada por primera vez, no la que fue ingresada nueva. Probé englobando los campos con un UpdatePanel que pensé que era para eso... y... o lo estoy usando muy mal o no sé que onda porque con el UP al hacer click en Modificar me cambia los datos a la 1era populada :/

Alguna idea?

PD: todo el tema del modificar anda bien ya que probé al hacer new Usuario() para mandarselo a la base de datos con los campos, probé con unos datos fijos y los updateo perfectamente... no sé porque carajo no me quiere agarrar los datos nuevos ingresados D:
...Auxilio (?)

fedef118
19-01-2016, 08:28 AM
Tal vez este tirando fruta porque hace muchas años que no veo nada de programación pero no estarás mandando a guardar la misma variable con la que populas los campos?

Damián
20-01-2016, 12:26 PM
Leia como estas ? Te animas a mostrarme la el bloque donde tenes el modificar ? Te doy una mano con esto, te debe faltar alguna boludes !

Saludos.

Leia
21-01-2016, 11:28 AM
Muchas gracias Damián y fedef118 por la ayuda
Esta es la parte del código que llamo al método de modificar

u= new Usuario(this.documento.Text, this.contrasenia.Text, this.email.Text, this.nombre.Text, this.apellido.Text,
this.direccion.Text, Convert.ToInt64(this.telefono.Text), Convert.ToInt64(this.celular.Text),
Convert.ToDateTime(this.fechaNacimiento.Text), true);

try
{
repoUsuario.ModificarUsuario(u);
this.mensajeUsuario.Text = "Usuario modificado satisfactoriamente";

}
catch (Exception exception)
{
this.errorUsuario.Text = "No se ha podido modificar el usuario, inténtelo nuevamente";
}

y en el Page_Load hago lo siguiente para popular los datos para que los vea el usuario

u = (Usuario)Session["usuarioSeleccionado"];
this.nombre.Text = u.Nombre;
this.apellido.Text = u.Apellido;
this.fechaNacimiento.Text = u.FechaNacimiento.ToString("dd/MM/yyyy");
this.documento.Text = u.Documento;
this.email.Text = u.Email;
this.direccion.Text = u.Direccion;
this.celular.Text = u.Celular.ToString();
this.telefono.Text = u.Telefono.ToString();
this.tipo.Text = u.Tipo.ToString();
this.ingreso.Text = u.Ingreso.ToString("dd/MM/yyyy");

y en la parte de diseñar la página tengo algo como esto en cada campo
<div class="control-group">
<asp:Label runat="server" Text="Dirección: "></asp:Label>
<asp:Label runat="server" Text="*" ForeColor="Red"></asp:Label>
<div class="controls">
<asp:TextBox ID="direccion" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator runat="server" ControlToValidate="direccion"
ErrorMessage="Campo Requerido" ForeColor="Red" />
</div>
</div>

no es la gran cosa... hasta es algo bastante choto pero ta me tranqué y es una de las pocas cosas que me falta arreglar para entregar D:

Damián
21-01-2016, 03:49 PM
Muchas gracias @Damián (http://www.gameover.uy/member.php?u=2280) y @fedef118 (http://www.gameover.uy/member.php?u=1680) por la ayuda
Esta es la parte del código que llamo al método de modificar

u= new Usuario(this.documento.Text, this.contrasenia.Text, this.email.Text, this.nombre.Text, this.apellido.Text,
this.direccion.Text, Convert.ToInt64(this.telefono.Text), Convert.ToInt64(this.celular.Text),
Convert.ToDateTime(this.fechaNacimiento.Text), true);

try
{
repoUsuario.ModificarUsuario(u);
this.mensajeUsuario.Text = "Usuario modificado satisfactoriamente";

}
catch (Exception exception)
{
this.errorUsuario.Text = "No se ha podido modificar el usuario, inténtelo nuevamente";
}

y en el Page_Load hago lo siguiente para popular los datos para que los vea el usuario

u = (Usuario)Session["usuarioSeleccionado"];
this.nombre.Text = u.Nombre;
this.apellido.Text = u.Apellido;
this.fechaNacimiento.Text = u.FechaNacimiento.ToString("dd/MM/yyyy");
this.documento.Text = u.Documento;
this.email.Text = u.Email;
this.direccion.Text = u.Direccion;
this.celular.Text = u.Celular.ToString();
this.telefono.Text = u.Telefono.ToString();
this.tipo.Text = u.Tipo.ToString();
this.ingreso.Text = u.Ingreso.ToString("dd/MM/yyyy");

y en la parte de diseñar la página tengo algo como esto en cada campo
<div class="control-group">
<asp:Label runat="server" Text="Dirección: "></asp:Label>
<asp:Label runat="server" Text="*" ForeColor="Red"></asp:Label>
<div class="controls">
<asp:TextBox ID="direccion" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator runat="server" ControlToValidate="direccion"
ErrorMessage="Campo Requerido" ForeColor="Red" />
</div>
</div>

no es la gran cosa... hasta es algo bastante choto pero ta me tranqué y es una de las pocas cosas que me falta arreglar para entregar D:


Aca no esta el problema, el problema debe estar en el metodo Modificiar ya que aca lo unico que haces es levantar los datos en los TextBox del usuario guardado en la Session. Pegate le modificar !

Leia
21-01-2016, 03:59 PM
Pasa que cuando en la parte de new Usuario() de arriba del todo en vez de darle esos datos le di datos fijos "nombre", "apellido" etc... y al darle modificar me lo modificó lo más bien en la BD... pero por alguna razón los this.algo.Text no se actualizan cuando ingreso nuevos valores en la UI
por ejemplo el this.nombre.Text = u.Nombre; sacados de la session más arriba y lueg si modifico en la UI ese campo... al hacer click en modificar y fijarme el this.nombre.Text sigué aún con los datos de la session :/ eso lo probé con datos fijos por eso el error es cuando se mandan los datos... es como que nunca se sobreescribe el this.algo.Text :/

Damián
22-01-2016, 09:29 PM
Pasa que cuando en la parte de new Usuario() de arriba del todo en vez de darle esos datos le di datos fijos "nombre", "apellido" etc... y al darle modificar me lo modificó lo más bien en la BD... pero por alguna razón los this.algo.Text no se actualizan cuando ingreso nuevos valores en la UI
por ejemplo el this.nombre.Text = u.Nombre; sacados de la session más arriba y lueg si modifico en la UI ese campo... al hacer click en modificar y fijarme el this.nombre.Text sigué aún con los datos de la session :/ eso lo probé con datos fijos por eso el error es cuando se mandan los datos... es como que nunca se sobreescribe el this.algo.Text :/

Lo que pasa es que en ningun momento agregas el objeto nuevo a la session, lo que haces es siempre sacar lo que esta en la session. Guarda el nuevo usuario en la session.