none
Asignar valores a campos de Fromview RRS feed

  • Pregunta

  • Que tal un saludo, tengo un gran problema ya que desde que empece hacer mis primeras aplicaciones web he tratado de asignar valores a campos label o textbox, que se encuentran dentro de un fromview, para que al momento de abrir la pagina que contiene un fromview aparezca el valor por defecto que le asigne.

     

    <asp:FormView ID="FormView1" runat="server" DataKeyNames="user,curso" DataSourceID="SqlDataSource1"

    DefaultMode="Insert" Width="880px" Font-Names="Arial" Font-Size="9pt" BackColor="WhiteSmoke" OnPageIndexChanging="FormView1_PageIndexChanging">

    <InsertItemTemplate>

    Nombre Completo:

    <asp:TextBox ID="nombre" runat="server" Font-Names="Arial" Font-Size="8pt"

    Width="399px" Text='<%# Bind("nombre") %>'></asp:TextBox>

    </table>

     

    </asp:FormView>

     

    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConflictDetection="CompareAllValues"

    ConnectionString="<%$ ConnectionStrings:ConnectionString %>"

    InsertCommand="INSERT INTO [usereval] ([nombre], [curso], [sucursal] VALUES (@nombre, @curso, @sucursal"

     

    Si yo quisiera asignar por ejemplo el nombre del usuario con el que se encuentra logeado un ejemplo Alejandro a mi campo nombre de mi formulario, para que al abrir la pagina de inmediato le aparezca en el campo textbox nombre del formulario, el nombre de su session, y ya no tener que ingresar manualmente ese campo, y que al darle en el boton de insertar lo asigne a la base de datos.

     

    Espero puedan ayudarme se los agradezco de antemano.

     

     

     

     

    lunes, 12 de mayo de 2008 4:07

Respuestas

  • Hola:

    El Control FormView utiliza templates para que puedas anidar controles dentro de él. Para encontrar la referencia al control que quieres poner el valor, debes utilizar su método FindControl:

    Code Snippet

    TextBox t = (TextBox)FormView.FindControl("Nombredeltexbox");
    t.Text = User.Identity.Name;



    Salu2 y ya me cuentas.


    lunes, 12 de mayo de 2008 15:22

Todas las respuestas

  • Hola:

    Puedes hacerlo mediante User.Identity.Name para obtener el usuario que ha hecho loggin o accediendo a tu variable de sesión, porque con Bind("nombre") estás accediendo a campo nombre de la fuente de datos.

    Salu2
    lunes, 12 de mayo de 2008 8:01
  • Gracias Luis por contestar me a servido la informacion que me enviaste, solo que sigo con el problema que comentaba, que es lo que me pasa, si yo tengo el page holder y dentro de el añado textbox, label etc... puedo verlos desde el page_load y directamente asignarle un valor X.

     

    Lo que hice con la informacion que me enviaste fue :  nombre.text = User.Identity.Name;

     

    y en efecto al correr la aplicacion me visualiza el nombre del usuario dentro del textbox. pero esto esta fuera del Fromview.

     

    Dentro del Page_Load no puedo ver ningun campo del Fromview, para poder asignarle un valor de entrada a algun campo, y que cuando se ejecute la pagina aparezca el campo textbox con el valor que yo le asigne, ese es el detalle que tengo.

     

    He tratado de buscar las variables como Fromview.nombre, this.fromview.nombre, pero oh estoy usando la instruccion incorrecta para visualizar los campos del fromview o no se que pasa, espero puedas ayudarme si tienes algun ejemplo te lo agradeceria.

     

    Saludos.

    lunes, 12 de mayo de 2008 15:17
  • Hola:

    El Control FormView utiliza templates para que puedas anidar controles dentro de él. Para encontrar la referencia al control que quieres poner el valor, debes utilizar su método FindControl:

    Code Snippet

    TextBox t = (TextBox)FormView.FindControl("Nombredeltexbox");
    t.Text = User.Identity.Name;



    Salu2 y ya me cuentas.


    lunes, 12 de mayo de 2008 15:22
  • Te dejo un ejemplo:

    Code Snippet

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;

    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                TextBox t = (TextBox)FormView1.FindControl("nombreTextBox");
                t.Text = User.Identity.Name;
            }
        }
    }


    Code Snippet

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title>Untitled Page</title>
    </head>
    <body>
        <form id="form1" runat="server">
            <asp:FormView ID="FormView1" runat="server" DataKeyNames="nombre" DataSourceID="AccessDataSource1"
                DefaultMode="Insert">
                <EditItemTemplate>
                    nombre:
                    <asp:Label ID="nombreLabel1" runat="server" Text='<%# Eval("nombre") %>'></asp:Label><br />
                    curso:
                    <asp:TextBox ID="cursoTextBox" runat="server" Text='<%# Bind("curso") %>'>
                    </asp:TextBox><br />
                    sucursal:
                    <asp:TextBox ID="sucursalTextBox" runat="server" Text='<%# Bind("sucursal") %>'>
                    </asp:TextBox><br />
                    <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update"
                        Text="Update">
                    </asp:LinkButton>
                    <asp:LinkButton ID="UpdateCancelButton" runat="server" CausesValidation="False" CommandName="Cancel"
                        Text="Cancel">
                    </asp:LinkButton>
                </EditItemTemplate>
                <InsertItemTemplate>
                    nombre:
                    <asp:TextBox ID="nombreTextBox" runat="server" Text='<%# Bind("nombre") %>'>
                    </asp:TextBox><br />
                    curso:
                    <asp:TextBox ID="cursoTextBox" runat="server" Text='<%# Bind("curso") %>'>
                    </asp:TextBox><br />
                    sucursal:
                    <asp:TextBox ID="sucursalTextBox" runat="server" Text='<%# Bind("sucursal") %>'>
                    </asp:TextBox><br />
                    <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert"
                        Text="Insert">
                    </asp:LinkButton>
                    <asp:LinkButton ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel"
                        Text="Cancel">
                    </asp:LinkButton>
                </InsertItemTemplate>
                <ItemTemplate>
                    nombre:
                    <asp:Label ID="nombreLabel" runat="server" Text='<%# Eval("nombre") %>'></asp:Label><br />
                    curso:
                    <asp:Label ID="cursoLabel" runat="server" Text='<%# Bind("curso") %>'></asp:Label><br />
                    sucursal:
                    <asp:Label ID="sucursalLabel" runat="server" Text='<%# Bind("sucursal") %>'></asp:Label><br />
                </ItemTemplate>
            </asp:FormView>
            <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/pruebas.mdb"
                SelectCommand="SELECT * FROM [userval]"></asp:AccessDataSource>
        </form>
    </body>
    </html>


    Salu2
    lunes, 12 de mayo de 2008 15:35
  • Gracias Luis me funciono a la perfeccion.

     

    Saludos

     

    lunes, 12 de mayo de 2008 19:25