一.代码如下
  dt=new DataTable();
  dt=ds.Tables[0];
  DataGrid1.DataKeyField=ds.Tables[0].Columns[0].ToString();
  dt.Columns.RemoveAt(0);
  DataGrid1.DataSource=dt.DefaultView;
  DataGrid1.DataBind();
运行报错:异常详细信息: System.Web.HttpException: DataBinder.Eval:“System.Data.DataRowView”不包含名称为 xxx(即第一个列) 的属性。 
DataGrid1.DataBind();这条语句运行时产生错误
这是什么原因?二.DataGrid控件(web类型)用来动态显示不同的数据库表的内容,如果我读取一张表的记录后,绑定至DataGrid控件,但是又不希望显示全部的列(例如用来标识的ID,或者此条记录状态),该如何通过代码而不是在设计界面进行设置隐藏这些列?

解决方案 »

  1.   

    再datagrid属性生成器中。
    取消自动生成列。
    通过自己添加列来完成。
      

  2.   

    1。是不是你对第一列进行了绑定?如果这样数据源删除了那一列,而datagrid没有应该会抱错
    2。在itemcreate事件来隐藏咯,
      

  3.   

    2。csdn有这方面的相关贴你搜索下可以找到答案的
      

  4.   

    你的两个问题其实是同一个问题
    首先你要在页面上指定datagrid的数据源字段并设置属性DataGrid1.AutoGenerateColumns = false然后取数据源 绑定就可以了 这个数据源中必须包含你在页面上指定的那些字段。
      

  5.   

    我的提问没有阐明清楚情况,抱歉。
    对DataGrid的情况是,已拥有一列按钮列,需要绑定至DataSet,但是仅仅显示DataSet中的某些列;
    同时尽量能操作DataGrid使之隐藏这些列,而最好不要用代码来生成列(原因是这个DataGrid是用来按要求显示数据库的每个表的,如果有n个表,则要对每个表编写对应的生成列的代码,并非明智之举)
      

  6.   

    dgshowaddlist.DataSource = ds.Tables["ClientInfo"].DefaultView;
    dgshowaddlist.DataBind();
    DataBind();
      

  7.   

    用BoundColumn,把datafiled設成你想要的字段。
    如果要隱藏該列,visible設為false即可
      

  8.   

    最后一次阐明我的问题:
    用下列代码绑定的DataGrid
    da=new SqlDataAdapter(sqlStr,con);
    ds=new DataSet();
    da.Fill(ds);
    DataGrid1.DataSource=ds.Tables[0].DefaultView;
    DataGrid1.DataBind();
    要求:
    在已有的DataGrid基础上能够访问和操作此DataGrid的某列,如设置某列隐藏
    注意:
    用DataGrid1.Columns[索引]来访问时报错,显示索引不存在,为何?
    能详细阐明原因和指点的不吝分相送
      

  9.   

    已自行解决
    原因及分析:
    DataGri用DataBind()绑定后无法用Columns[索引]访问(原因不清楚),只能在 DataGrid1_ItemCreated()事件中设定e.Item.Cells[索引].Visible来实现,遗憾的是不能指定Cell[字段名]来访问,只能用索引