从其他文件在数据表中添加行

本文关键字:添加行 数据表 其他 文件 | 更新日期: 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

希望对您有所帮助。

对于你在当前情况下想要的,马赫什·马尔帕尼的答案可能会引导你。