和其他类的静态变量一样application_end的时候结束
解决方案 »
- 关于三层架构Model层设计的问题
- dll反编译
- 200元求asp.net网站转成htm思路
- 如何查看一个控件对应事件的响应函数?
- 如何禁止重复确认
- 如何在上传文件后显示个“请稍后”的进度条,在传完后关闭进度条,最好有代码。
- javascaript (radio不能为空!)可以帮我改改吗?
- sql2005开发版本和企业版本的问题,我想很有意义.
- asp.net里怎么用com控件啊?比如mci控件这样的?有没有源代码可提供给小M学习一下?郁闷了很久了哦#_#
- 如何让TreeView初始化时不选中任何节点?
- 用c#,想在Page_Load的时候 让label1和texbox1显示机器的年月日,这种格式20030927或09272003显示,如何做到?做到
- 一个简单的问题,来者有分?
saucer(思归) ( ) 信誉:325 2003-09-27 20:58:00 得分:0
static members are associated with the class, not associated with threads, (otherwise, people will call them TLS, :-)), as long as the assembly in which the class belongs to is loaded or not reloaded, the static members will keep their values across requests/sessions....
楼上的大哥:
如果是关闭时结束,那我下面的代码错在哪里呢?
下面我只列出我认为与问题相关的代码,
我要实现的功能是动态地为DataGrid添加一行。 using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Configuration; namespace MyAspPageName
{
public class CheckTrainInfo : System.Web.UI.Page
{
//系统生成定义页面控件代码(此处只列出关键控件的定义)
…………
1 protected System.Web.UI.WebControls.DataGrid dgdTrainCheck;
2. protected static DataTable dt; //我定义静态变量 dt 3 private void Page_Load(object sender, System.EventArgs e)
4 {
// 在此处放置用户代码以初始化页面
5 if(!Page.IsPostBack)
6 {
7 dt = new DataTable();
8 DataColumn dcol = new DataColumn("No");
9 dcol.AutoIncrement=true;
10 dcol.AutoIncrementSeed=0;
11 dcol.AutoIncrementStep=1;
12 dcol.ReadOnly = true;
13 dcol.Unique = true;
14 dt.Columns.Add(dcol);
15 dt.Columns.Add("CheckContent");
16 dt.Columns.Add("CheckState");
17 dt.Columns.Add("CheckRe");
18
//初始化DataGrid时显示列名
19 DataRow drinit = dt.NewRow();
20 drinit[1]="";
21 drinit[2]="";
22 drinit[3]="";
23 dt.Rows.Add(drinit);
24 dgdTrainCheck.DataSource = dt.DefaultView;
25 dgdTrainCheck.DataBind();
26 dgdTrainCheck.Items[0].Visible = false; //设第一行为不可见
27 }
28 } ………………………… //其他事件代码,此处略去 //动态地给DataGrid--dgdTrainCheck增加一行
29 private void btnAdd_Click(object sender, System.EventArgs e)
30 {
31 DataRow dr = dt.NewRow();
32 dr["CheckContent"] = edtCheckContent.Value;
33 dr["CheckState"] = edtCheckState.Value;
34 dr["CheckRe"] = txtCheckRe.Text;
35 dt.Rows.Add(dr);
36 dgdTrainCheck.DataSource = dt.DefaultView;
37 dgdTrainCheck.DataBind();
38 }
………………………… //其他事件代码,此处略去39 } //class结束 编译时系统提示第 31 行有错,错误信息如下所示: Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.NullReferenceException: Object reference not set to an instance of an object. 如果页面静态变量的生命是在页面关闭时才结束,我这Button响应事件只是引起页面的重载,那么 dt 的只仍然存在才对,错误信息却说第 31 行的dt没有实例。奇怪!! 还奇怪的是,有时后该代码能正常编译,测试时能正常实现动态地为DataGrid添加一行的效果,但有时候就出现上面的错误,我都不知道错在哪里???
谢谢大家踊跃解答,否则我十一不好过了,5555555。