c# - 在所有表单中使用 DataTable 中的数据

标签 c# asp.net global-variables

在类中,我执行一个存储过程并返回一个 DataTable。

public DataTable getUserInfo(int abid)
    {
        DataTable tbl = new DataTable();

        string constring =ConfigurationManager.ConnectionStrings["myconn"].ConnectionString;
        using (SqlConnection con = new SqlConnection(constring))
        {
            using (SqlCommand cmd = new SqlCommand("getUserInfo", con))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@ABID", abid);

                SqlDataAdapter adap = new SqlDataAdapter(cmd);
                adap.Fill(tbl);  
            }
        }
        return tbl;
    }

然后在 default.aspx.cs 页面的代码后面我调用类并使用 foreach 循环我得到我需要的所有数据。

            DataTable tbl = new DataTable();
            tbl = u.getUserInfo(abid);

            foreach (DataRow row in tbl.Rows)
            {
                string firstName = row["firstName"].ToString();
                string lastName = row["lastName"].ToString();
                string fullname = row["fullname"].ToString();
                string Phone = row["phone"].ToString();  
            }

如果我只需要使用此页面中的数据,则此解决方案有效。我需要在项目的不同页面中使用相同的数据。当然,我可以每次调用该类并创建不同的数据表并将它们存储在不同的变量中,但我知道这不是很有效。我相信有更好的方法可以做到这一点。

有没有办法创建全局变量?例如,我将数据表加载到这些变量中,我可以在整个项目中使用它们吗?或者任何其他解决方案?

谢谢

最佳答案

如果该数据在不同用户之间共享,则使用缓存对象。请参阅:ASP.NET Caching: Techniques and Best Practices .

但如果该数据对于每个用户都是唯一的,则将该信息存储在 Session 对象中。 但请记住,Session 是为每个用户在 Server 上维护的,如果您在 Session 中保留太多数据,那么它将需要从 Server 获取更多资源。

参见:ASP.NET Session State Overview

Session中存储信息

//To store
Session["UserInfo"] = tbl;

找回

DataTable tbl = Session["UserInfo"] as DataTable;
if (tbl != null)
{
    //Datatable found;
}

Session 对象可以在多个页面上访问。

您还有其他选项可以在 ASP.Net 中跨页面维护状态,例如 Cookies。看 ASP.NET State Management Overview

关于c# - 在所有表单中使用 DataTable 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25166765/

相关文章:

php - 如何访问 "parent"函数的参数?

c# - MVC5 将身份验证表单放在 web.config 中的什么位置?

javascript - 回发前mvc javascript确认不起作用

c# - ListView 组标题单击 - 在 Windows 7 中禁用全选

Javascript 范围、安全性和扩展

Javascript 全局函数设置局部变量

c# - Linq DataTable 和 Take 方法

c# - 如何在 Rake 任务中使用带空格的路径?

c# - 在 C# 后端检查正则表达式验证器的验证

c# - 什么会导致此属性偶尔抛出 NullReferenceException?