11. 报错:System.NullReferenceException: 未将对象引用设置到对象的实例
错误原因:在调用 Session["userid"].ToString() 前应先检查Session["userid"] 对象是否为 null ,在未登录或者过期的情况下, Session["userid"] 的值是null,直接用ToString()方法就会出现以上的报错。
12. 错误:使用DropDownList控件从数据库中绑定数据,把选定的内容提取时,出现一个错误,无论选择哪个项,总是把第一个条目显示为被选条目。
错误原因: 在Page_Load()事件中没有包含IsPostBack检查,因为DropDownLisr控件绑定的数据是在Page_Load()中定义的,当每次提交时绑定到条目集合都要重新初始化,所以返回总是绑定的默认的第一条目。解决方法使用IsPostBack检查是否执行回传:
- void Page_Load(object sender, EventArgs e)
- {
- if (!this.IsPostBack)
- {
- 绑定的控件
- }
- }
Page.ISPostBack属性介绍:该属性用于检查页面是否已经回传给服务器,Page_Load()事件处理程序中的代码仅在页面第一次加载时执行。当页面再次回传时,IsPostBack返回True,Page_Load()处理程序中的代码被跳过。
13. DropDownList如何绑定数据。
- protected void Page_Load(object sender, EventArgs e)
- {
- if (!this.IsPostBack)
- {
- string sqlh = "select userID from [user]";//数据语句
- DataSet han = sqlcontrol.maifang(sqlh);//sqlcontrol.maifang(sqlh)返回数据集,在此不在列出。
- DropDownList1.DataSource = han;//把数据集绑定到DropDownList1数据源
- DropDownList1.DataTextField = "userID";//userID是数据库中的字段,也是显示在DropDownList1上的条目
- DropDownList1.DataValueField = "userID";
- DropDownList1.DataBind();
- }
- }
14. 上面数据绑定有一个问题,就是绑定的全是数据库的内容,说明白点就是少了"----请选择XXX-------“此项,如何添加此项呢?有些方法,以下是网上搜到的。
以pubs库的jobs表为例子,我们在显示时显示job_desc字段,values值绑定job_id字段。
方法一:
使用属性设置,我们在DropDownList的items的属性中添加一列为”----请选择XXX-------“,然后更改AppandBataBoundItems属性为ture.
绑定代码:
- 1 SqlConnection conn = new SqlConnection("server=.;uid=sa;database=pubs");
- 2 SqlDataAdapter dap = new SqlDataAdapter("select * from jobs", conn);
- 3 DataTable dt = new DataTable();
- 4 dap.Fill(dt);
- 5 DropDownList1.Items.Clear();
- 6 DropDownList1.DataSource = dt;
- 7 DropDownList1.DataTextField = "job_desc";
- 8 DropDownList1.DataValueField = "job_id";
- 9 DropDownList1.DataBind();
- 方法二:
- 使用代码:
- 1
- 2 SqlConnection conn = new SqlConnection("server=.;uid=sa;database=pubs");
- 3 SqlDataAdapter dap = new SqlDataAdapter("select * from jobs", conn);
- 4 DataTable dt = new DataTable();
- 5 dap.Fill(dt);
- 6 DropDownList1.Items.Clear();
- 7 DropDownList1.DataSource = dt;
- 8 DropDownList1.DataTextField = "job_desc";
- 9 DropDownList1.DataValueField = "job_id";
- 10 DropDownList1.DataBind();
- 11 DropDownList1.Items.Insert(0, new ListItem("----请选择XXX-------", ""));//此举必须放到数据绑定之后