private void Button1_Click(object sender, System.EventArgs e)

{
this.Open();
string find=this.TextBox1.Text.Trim();
string sql="select * from csee where cno like '"+find+"'";
SqlCommand cmd=new SqlCommand(sql,this.conn);

SqlDataAdapter ada=new SqlDataAdapter();
ada.SelectCommand=cmd;
DataSet ds=new DataSet();
ds.Clear(); ds.Tables["csee"].Columns[0].ColumnName="教师编号";
ds.Tables["csee"].Columns[1].ColumnName="课程编号";
ds.Tables["csee"].Columns[2].ColumnName="课程名称";
ds.Tables["csee"].Columns[3].ColumnName="课程性质";
ds.Tables["csee"].Columns[4].ColumnName="课程学分";
ds.Tables["csee"].Columns[5].ColumnName="总人数";
ds.Tables["csee"].Columns[6].ColumnName="星期一课时";
ds.Tables["csee"].Columns[7].ColumnName="上课地点";
ds.Tables["csee"].Columns[8].ColumnName="星期二课时";
ds.Tables["csee"].Columns[9].ColumnName="星期三课时";
ds.Tables["csee"].Columns[10].ColumnName="星期四课时";
ds.Tables["csee"].Columns[11].ColumnName="星期五课时";
ds.Tables["csee"].Columns[12].ColumnName="已选人数";
ds.Tables["csee"].Columns[13].ColumnName="开课系";
ada.Fill(ds,"csee");
}“/biyesheji”应用程序中的服务器错误。
--------------------------------------------------------------------------------未将对象引用设置到对象的实例。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
行 134: ds.Clear();
行 135:
行 136: ds.Tables["csee"].Columns[0].ColumnName="教师编号";
行 137: ds.Tables["csee"].Columns[1].ColumnName="课程编号";
行 138: ds.Tables["csee"].Columns[2].ColumnName="课程名称";
 源文件: e:\biyesheji\kcinfo.aspx.cs    行: 136 堆栈跟踪: 
[NullReferenceException: 未将对象引用设置到对象的实例。]
   biyesheji.kcinfo.Button1_Click(Object sender, EventArgs e) in e:\biyesheji\kcinfo.aspx.cs:136
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1277  

解决方案 »

  1.   

    string find=this.TextBox1.Text.Trim();
    string sql="select * from csee where cno like '"+find+"'"; SqlDataAdapter ada=new SqlDataAdapter(sql,conn);
    DataSet ds=new DataSet();
    ada.Fill(ds);
      

  2.   

    因为在你使用Ds前,并没有向ds中添加数据,因而ds 中是没有数据的,而你在下对却对其中进行了访问,所以就会抛出这个异常!
      程序从SqlCommand cmd=new SqlCommand(sql,this.conn)到ds.Clear();
      改成   

    SqlDataAdapter ada=new SqlDataAdapter(sql,this.conn);
    DataSet ds=new DataSet();
    ada.Fill(ds,"csee");
      

  3.   

    ds.Clear();ds.Tables["csee"].Columns[0].ColumnName="教师编号";
    在这里你没有csee这个datatable,当然要出错了。
    你需要先填充后改标题
    参考:
    [Visual Basic, C#] 下面的示例为在 DataSet 中找到的每个 DataTable 创建一个 DataGridTableStyle,并将 DataGridTableStyle 对象的 MappingName 设置为 DataTable 的 TableName。DataGridTableStyle 对象随后被添加到 TableStyles 属性所返回的 GridTableStylesCollection 中。该示例还输出 GridTableStylesCollection 中每个 DataGridTableStyle 的 GridColumnStyles 属性所返回 GridColumnStylesCollection 中每个 DataGridColumnStyle 的 MappingName。
    [Visual Basic] 
    Private Sub AddTables(myDataGrid As DataGrid, _
    myDataSet As DataSet )
        Dim t As DataTable 
        For Each t in myDataSet.Tables
           Dim myGridTableStyle As DataGridTableStyle  = new _
           DataGridTableStyle()
              myGridTableStyle.MappingName = t.TableName
              myDataGrid.TableStyles.Add(myGridTableStyle)
           ' Note that DataGridColumnStyle objects will
           ' be created automatically for the first DataGridTableStyle
           ' when you add it to the GridTableStylesCollection.*/
        Next
     End Sub
     Private Sub PrintGridStyleInfo(myDataGrid As DataGrid )
        Dim myGridStyle As DataGridTableStyle
        Dim myColumnStyle As DataGridColumnStyle
        
        for each myGridStyle in _
        myDataGrid.TableStyles
           Console.WriteLine(myGridStyle.MappingName)
           for each myColumnStyle in myGridStyle.GridColumnStyles
             Console.WriteLine(myColumnStyle.MappingName)
           Next
        Next
     End Sub
    [C#] 
    private void AddTables(DataGrid myDataGrid, DataSet myDataSet){
       foreach(DataTable t in myDataSet.Tables){
          DataGridTableStyle myGridTableStyle = new 
          DataGridTableStyle();
          myGridTableStyle.MappingName = t.TableName;
          myDataGrid.TableStyles.Add(myGridTableStyle);      /* Note that DataGridColumnStyle objects will
          be created automatically for the first DataGridTableStyle
          when you add it to the GridTableStylesCollection.*/
       }
    }
    private void PrintGridStyleInfo(DataGrid myDataGrid){
       /* Print the MappingName of each DataGridTableStyle,
       and the MappingName of each DataGridColumnStyle. */
       foreach(DataGridTableStyle myGridStyle in 
       myDataGrid.TableStyles){
       Console.WriteLine(myGridStyle.MappingName);
       foreach(DataGridColumnStyle myColumnStyle in 
          myGridStyle.GridColumnStyles){
         Console.WriteLine(myColumnStyle.MappingName);
          }
       }
    }
      

  4.   

    定义之后还是个空。
    必须add
      

  5.   

    dataset 里没有定义 column 和 填充数据呢,怎么就定义 column 的 name 了? 应该先 da.fill() 啊.