从其他文件在数据表中添加行
本文关键字:添加行 数据表 其他 文件 | 更新日期: 2023-09-27 18:32:39
我在global.asax文件中创建了一个包含四列的数据表。我只向 global.asax 文件中数据表的两列添加行。我正在尝试从同一项目下的不同.aspx.cs文件中添加其他两行。当我尝试添加该行时,它给了我一个错误
"'DR'这个名字在当前上下文中不存在"。
我的代码:
登录.aspx.cs:
protected void btnLogin_Click(object sender, EventArgs e)
{
if(txtPassword.Text == "")
{
Server.Transfer("Main.aspx", true);
}
if(txtUserName.Text!= "" && txtPassword.Text!= "")
{
Server.Transfer("Userlog.aspx", true);
}
dr["username"] = Session["UserName"]; // username
dr["login_time"] = Session["LoginTime"]; //login time
}
global.asax:
void Session_Start(Object s, EventArgs e)
{
Application.Lock();
dt = new DataTable();
dt.Columns.Add(new DataColumn("session_id", System.Type.GetType("System.String")));
dt.Columns.Add(new DataColumn("username", System.Type.GetType("System.String")));
dt.Columns.Add(new DataColumn("login_time", System.Type.GetType("System.DateTime")));
dt.Columns.Add(new DataColumn("ip_address", System.Type.GetType("System.String")));
Application["visitorTable"] = dt;
DataRow dr = dt.NewRow();
dr["session_id"] = (System.String)Session.SessionID; // session id
dr["ip_address"] = Request.ServerVariables["SERVER_NAME"]; //ip-address
dt.Rows.Add(dr);
//dt = (DataTable)Application["visitorTable"];
Application["visitorTable"] = dt;
DataView view = new DataView(dt);
Application.UnLock();
}
它会通过,
因为 dr 变量不存在。如果您希望数据表行位于会话对象中,请将数据表行与某个关键字一起存储,然后检索它。
Session["RowDataTable"] = dr;
然后登录页面
var dr = Session["RowDataTable"] as DataRow;
嗯,真的
不知道从哪里开始:
首先,您定义的变量 dt 和 dr 仅在方法 Session_Start(){} 的范围内可用。这意味着,在方法调用之后,这两个变量都不再可用。
其次,如果您需要在该方法之外访问您的数据,则应将其存储在私有变量中:
private DataTable _myDataTable;
或者在公共财产中从当前类外部访问它:
public DataTable MyDataTable { get; set }
您还应该通知您有关静态修饰符的信息:
https://msdn.microsoft.com/de-de/library/98f28cdx.aspx
希望对您有所帮助。
对于你在当前情况下想要的,马赫什·马尔帕尼的答案可能会引导你。