none
Llenar gridview en 4 capas RRS feed

  • Pregunta

  • Buenas estimados, me gustaría poder llenar mi gridview dependiendo de muchas condiciones:
    1: que esté logeado
    2: ver si es administrador,asistente o empleado
    Lo que quiero mostrar en el gridivew son enlaces de pdf para descargar o verlos online.

    en mi CAPAENTIDAD creé una clase llamada "EntidadDocumento"

    public class EntidadDocumento
        {
            public string arch_nombre { get; set; }
            public string arch_descripcion { get; set; }
            public int id_usuario { get; set; }
            public int id_usuario_rol_descrip { get; set; }
        }

    en mi CAPADATO creé una clase llamada "DatoUsuario"

    public DataTable ListarClientes(EntidadDocumento EDocumento)
            {
                string conex = ConfigurationManager.ConnectionStrings["CadenaConexion"].ToString();
                SqlConnection cnn = new SqlConnection(conex);

                SqlDataAdapter da = new SqlDataAdapter("grdpdf", cnn);
                DataTable dt = new DataTable();

                da.SelectCommand.CommandType = CommandType.StoredProcedure;
                da.SelectCommand.Parameters.AddWithValue("@idusu", EDocumento.id_usuario);
                da.SelectCommand.Parameters.AddWithValue("@idusurol", EDocumento.id_usuario_rol_descrip);
                da.Fill(dt);
                return dt;
            }

    En mi CAPANEGOCIO cree una clase llamda NegocioUsuario

    public DataTable ListarClientes(EntidadDocumento EDocumento)
            {
                return DUsuario.ListarClientes(EDocumento);
            }

    y en mi CAPAVISTA mando los siguientes datos:

    EntidadDocumento EDocumento = new EntidadDocumento();
            NegocioUsuario NUsuario = new NegocioUsuario();
            protected void Page_Load(object sender, EventArgs e)
            {
                if
                (Session["usuario"] != null)
                {
                    Label1.Text = "Bienvenido " + Session["usuario"];
                    string nivel = Session["usuario"].ToString();
                    if(nivel == "Administrador")
                    {
                        EDocumento.id_usuario = 1;
                        EDocumento.id_usuario_rol_descrip = 1;
                        DataTable dt = NUsuario.ListarClientes(EDocumento);
                        if (dt.Rows.Count != 0)
                        {
                            GridView1.DataSource = dt;
                            GridView1.DataBind();
                        }
                    }

                }
                else
                {
                    Response.Redirect("~/Acceso.aspx");
                }
            }

    Pero no me llena el gridview, espero puedan ayudarme, saludos cordiales.

    miércoles, 26 de abril de 2017 14:26

Respuestas

  • Hola,bueno lo primero sería sugerirte que revises que en efecto este datatable , este trayendo datos,poniendo un punto de interupcion

      DataTable dt = NUsuario.ListarClientes(EDocumento);

    por otro lado el evento load se va a ejecutar , no solo la primera vez que cargas la página sino que es el evento que se dispara siempre que hay una devolución de datos por parte del servidor , como por ejemplo si haz hecho click en algún boton del formulario, o en algún evento de la grilla

    por lo que si solo se quiere que se ejecute el codigo la primera ves que carga la página se hace uso de la propiedad IsPostBack

    algo como

    protected void Page_Load(object sender, EventArgs e)
    {
    
    if (!Page.IsPostBack)
    
    {
     'aqui operaciones que solo se requieren una vez y al cargar la pagina
     }
    }


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala.Saludos. Lima-Perú.

    miércoles, 26 de abril de 2017 20:47

Todas las respuestas

  • Hola,bueno lo primero sería sugerirte que revises que en efecto este datatable , este trayendo datos,poniendo un punto de interupcion

      DataTable dt = NUsuario.ListarClientes(EDocumento);

    por otro lado el evento load se va a ejecutar , no solo la primera vez que cargas la página sino que es el evento que se dispara siempre que hay una devolución de datos por parte del servidor , como por ejemplo si haz hecho click en algún boton del formulario, o en algún evento de la grilla

    por lo que si solo se quiere que se ejecute el codigo la primera ves que carga la página se hace uso de la propiedad IsPostBack

    algo como

    protected void Page_Load(object sender, EventArgs e)
    {
    
    if (!Page.IsPostBack)
    
    {
     'aqui operaciones que solo se requieren una vez y al cargar la pagina
     }
    }


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala.Saludos. Lima-Perú.

    miércoles, 26 de abril de 2017 20:47
  • hola

    Si pones un breakpoint en el codigo, puede validar que pasa por el if que evalua si el Session["usuario"] es distinto de null ?

    Puedes inspeccionar el datatable para ver si este tiene registros

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 26 de abril de 2017 20:55