Array
(
)

DataTable Static

Valter Vinicius
   - 24 nov 2010

Boa noite estou com um problema ao criar um DataTable, eu não queria utilizar ViewState para manter seu estado, dei uma pesquisada e descobri que seria possivel utilizar um DataTable static: (private static DataTable dt).
Porém o grande problema é que o conteúdo está sendo listado em todos os lugares, exemplo se eu rodar minha aplicação em um navegador e preencher o DataTable quando eu abrir outro navegador e adicionar dados os dados tornam a ser únicos toda vez que sofrer alterações ambos navegadores sofrerão.
Torno a dizer gostaria que me ajudassem a solucionar sem utilizar algum objeto para manter seu estado (ViewState, Session...).
Segue código abaixo:

Default.aspx:
--------------------------------------------------------------------------------------------------------------------------------------------------
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="DataStatic._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
   
        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
        <br />
        <asp:GridView ID="GridView1" runat="server">
        </asp:GridView>
   
    </div>
    </form>
</body>
</html>
--------------------------------------------------------------------------------------------------------------------------------------------------
Default.aspx.cs
-------------------------------------------------------------------------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

namespace DataStatic
{
    public partial class _Default : System.Web.UI.Page
    {
        protected static DataTable _dt;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                _dt = new DataTable();
                DataTableReader reader = new DataTableReader(GetCustomers());

                _dt.Load(reader);
            }
        }

        private static DataTable GetCustomers()
        {
            DataTable table = new DataTable();
            table.Columns.Add("col1");

            return table;
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            DataRow row = _dt.NewRow();
            _dt.Rows.Add(row);
            row["col1"] = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
            GridView1.DataSource = _dt;
            GridView1.DataBind();
        }
    }
}
-------------------------------------------------------------------------------------------------------------------------------------------------

Obrigado