gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:18:38 24 4
gpt4 key购买 nike

在类中,我执行一个存储过程并返回一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com