[英]Adding rows in data table in c#
I have created a data table in my Application start method and I am trying to add rows to this data table from my session start method. 我已经在应用程序启动方法中创建了一个数据表,并且尝试从会话启动方法向该数据表添加行。 When I try to add rows, it gives an error on the data table that 当我尝试添加行时,它在数据表上给出了一个错误
the name does not exists in the current context. 该名称在当前上下文中不存在。
I am a beginner to programming. 我是编程的初学者。 Any help is appreciated. 任何帮助表示赞赏。
Here is my code: 这是我的代码:
// application begins
void Application_Start(Object s, EventArgs e)
{
DataTable 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;
}
// browser's first visit to the page, (session starts)
void Session_Start(Object s, EventArgs e)
{
{
Application.Lock();
DataRow dr = dt.NewRow();
dr["session_id"] = (System.String)HttpContext.Current.Session.SessionID; // session id
dr["ip_address"] = Request.ServerVariables["SERVER_NAME"]; //ip-address
dt.Rows.Add(dr);
dt = (Database)Application["visitorTable"];
Application["visitorTable"] = dt;
Application.UnLock();
}
}
You should specify the table name when creating a new DataTabe... 创建新的DataTabe时,应指定表名。
DataTable dt = new DataTable("VisitorTable");
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;
// you create it like this
Application["visitorTable"] = dt;
// and you read it like this
dt = (Database)Application["VisitorTable"];
Notice the issue? 注意到问题了吗?
Also you don't need to rely on reflection to get a type's description, a simple compile time typeof(string)
and typeof(DateTime)
will take care of it. 同样,您也不需要依赖反射来获取类型的描述,简单的编译时间typeof(string)
和typeof(DateTime)
会解决这个问题。
when your are executing following code 当您执行以下代码时
DataTable 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")));
have you checked whether your dt added with column name specified ? 您是否检查过您的dt是否添加了指定的列名? or dt is generated with columns Column1,colum2,column3 if those are generated with Column1,colum2,column3 ths why you ll be facing above error , rename column with your name of dt 或dt是用Column1,colum2,column3列生成的,如果那些是用Column1,colum2,column3生成的,这就是为什么您会遇到上述错误,将列重命名为dt
Check this 检查一下
Dynamically create DataTable and bind to GridView in ASP.Net 动态创建DataTable并绑定到ASP.Net中的GridView
it might be help you 可能对你有帮助
DataTable dt; void Application_Start(Object s, EventArgs e) { 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; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.