Показать список <T>в Gridview при нажатии на кнопку / asp.net - PullRequest
0 голосов
/ 24 июня 2018

Мне нужна твоя помощь.У меня есть 5 текстовых полей в веб-форме, информация которых сохраняется в списке объектов, когда я нажимаю кнопку сохранения.Я хочу показать эту информацию в виде сетки, нажав кнопку.Я пробовал умножать способы, но это не работает.не могли бы вы помочь .. ???

Это класс

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Capa_Negocios
{

    public class Nota
    {
        string num_Oficio;
        string asunto;
        string destinatario;
        string fecha;
        string cod_ubicacion;

        public Nota(string ofc, string asun, string dest, string fec, string cod)
        {
            num_Oficio = ofc;
            asunto = asun;
            destinatario = dest;
            fecha = fec;
            cod_ubicacion = cod;
        }

        public string Número_Oficio { get; set; }
        public string Asunto { get; set; }
        public string Destinatario { get; set; }
        public string Fecha { get; set; }
        public string Código_Ubicación { get; set; }
    }


}

Это логический слой

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Capa_Negocios
{
    public class Logica
    {
        List<Nota> Lista_Oficios = new List<Nota>();

        public Nota AgregarNota(string ofic, string asun, string dest, string fech, string cod)
        {
            Nota New_note = new Nota(ofic, asun, dest, fech, cod);
            return New_note;
        }

        public void cargarlista(Nota obj)
        {
            Lista_Oficios.Add(obj);

        }

        public List<Nota> Lista()
        {
            return Lista_Oficios;
        }

    }
}

wfrmOficio.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Capa_Negocios;

namespace Datos_Oficio
{

        public partial class wfrmOficio : System.Web.UI.Page
    {
        Capa_Negocios.Logica reg = new Capa_Negocios.Logica();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack)
            {
                List<Nota> Lista_Oficios = (List<Nota>) Session["list"];


            }


        }


        protected void btnGuardar_Click(object sender, ImageClickEventArgs e)
        {

            reg.cargarlista(reg.AgregarNota(txtNumOfic.Text, txtAsunto.Text, txtDest.Text, txtFecha.Text, txtCodigo.Text));
            Session["list"] = reg.Lista();
            lblMensaje.Text = "Oficio agregado correctamente";
            lblRegistros.Text = reg.Lista().Count.ToString();


        }

        private void llenarGrid()
        {

            GridView1.DataSource = reg.Lista() ;
            GridView1.DataBind();
            Session["list"] = reg.Lista();
        }


        protected void btnListar_Click(object sender, ImageClickEventArgs e)
        {

            llenarGrid();
        }

        protected void Unnamed1_Click(object sender, ImageClickEventArgs e)
        {

        }
    }
}

wfrmOficio.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="wfrmOficio.aspx.cs" Inherits="Datos_Oficio.wfrmOficio" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
        .auto-style1 {
            text-align: center;
            font-weight: normal;
        }
        .auto-style2 {
            width: 275px;
        }
        .auto-style3 {
            width: 301px;
        }
        .auto-style4 {
            width: 164px;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>

        <table style="width:100%;">
            <tr>
                <td colspan="3"><h1 class="auto-style1"><strong>Ingreso de Datos / Oficio</strong></h1></td>
                <td rowspan="10">
                    <asp:ImageButton ID="ImageButton4" runat="server" ImageUrl="~/Recursos/icono_checklist.png" />
                </td>
            </tr>
            <tr>
                <td colspan="3">&nbsp;</td>
            </tr>
            <tr>
                <td colspan="3">&nbsp;</td>
            </tr>
            <tr>
                <td class="auto-style2">
                    <asp:Label ID="lblNumOficio" runat="server" Font-Bold="True" ForeColor="#000099" Text="Número de Oficio:"></asp:Label>
                </td>
                <td colspan="2">
                    <asp:TextBox ID="txtNumOfic" runat="server"></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td class="auto-style2">
                    <asp:Label ID="lblAsunto" runat="server" Font-Bold="True" ForeColor="#003399" Text="Asunto:"></asp:Label>
                </td>
                <td colspan="2">
                    <asp:TextBox ID="txtAsunto" runat="server"></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td class="auto-style2">
                    <asp:Label ID="lblDestinatario" runat="server" Font-Bold="True" ForeColor="#003399" Text="Destinatario:"></asp:Label>
                </td>
                <td colspan="2">
                    <asp:TextBox ID="txtDest" runat="server"></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td class="auto-style2">
                    <asp:Label ID="lblFechaOficio" runat="server" Font-Bold="True" ForeColor="#003399" Text="Fecha de Oficio:"></asp:Label>
                </td>
                <td colspan="2">
                    <asp:TextBox ID="txtFecha" runat="server"></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td class="auto-style2">
                    <asp:Label ID="lblCodigo" runat="server" Font-Bold="True" ForeColor="#003399" Text="Código de ubicación / Archivo Físico"></asp:Label>
                </td>
                <td colspan="2">
                    <asp:TextBox ID="txtCodigo" runat="server"></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td class="auto-style2">&nbsp;</td>
                <td colspan="2">&nbsp;</td>
            </tr>
            <tr>
                <td class="auto-style2">
                    <asp:ImageButton ID="btnGuardar" runat="server" Height="49px" ImageUrl="~/Recursos/stock_save.png" Width="48px" OnClick="btnGuardar_Click" />
                </td>
                <td class="auto-style3">
                    <asp:ImageButton ID="btnListar" runat="server" Height="42px" ImageUrl="~/Recursos/listar.png" Width="43px" OnClick="btnListar_Click" />
                </td>
                <td class="auto-style4">
                    <asp:ImageButton runat="server" Height="51px" ImageUrl="~/Recursos/exit.png" Width="61px" OnClick="Unnamed1_Click" />
                </td>
            </tr>
            <tr>
                <td class="auto-style2">
                    <asp:Label ID="lblMensaje" runat="server"></asp:Label>
                </td>
                <td class="auto-style3">&nbsp;</td>
                <td class="auto-style4">&nbsp;</td>
                <td>&nbsp;</td>
            </tr>
            <tr>
                <td class="auto-style2">
                    <asp:Label ID="lblRegistros" runat="server" Text="Registros:"></asp:Label>
                </td>
                <td class="auto-style3">&nbsp;</td>
                <td class="auto-style4">&nbsp;</td>
                <td>&nbsp;</td>
            </tr>
            <tr>
                <td colspan="4">
                    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true" >

                    </asp:GridView>


            </tr>
        </table>

    </div>
    </form>
</body>
</html>

1 Ответ

0 голосов
/ 25 июня 2018

Попробуйте:

Удалить код из события Page_Load:

 protected void Page_Load(object sender, EventArgs e)
  {
  }

Обновление btnGuardar_Click код метода, подобный этому:

    protected void btnGuardar_Click(object sender, ImageClickEventArgs e)
    { 
       List<Nota> notaList;

       if(Session["list"]!=null) {
          notaList = (List<Nota>)Session["list"];       
        }
        else {
          notaList = new List<Nota>();
        }

        notaList.Add(reg.AgregarNota(txtNumOfic.Text, txtAsunto.Text, txtDest.Text, txtFecha.Text, txtCodigo.Text));

         Session["list"] = notaList;
    }

Обновление llenarGrid Код метода:

  private void llenarGrid()
        {
          if(Session["list"]!=null) {
             List<Nota> notaList = (List<Nota>)Session["list"];       

            GridView1.DataSource = notaList;
            GridView1.DataBind(); 
           }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...