一.代码如下
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,或者此条记录状态),该如何通过代码而不是在设计界面进行设置隐藏这些列?
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,或者此条记录状态),该如何通过代码而不是在设计界面进行设置隐藏这些列?
取消自动生成列。
通过自己添加列来完成。
2。在itemcreate事件来隐藏咯,
首先你要在页面上指定datagrid的数据源字段并设置属性DataGrid1.AutoGenerateColumns = false然后取数据源 绑定就可以了 这个数据源中必须包含你在页面上指定的那些字段。
对DataGrid的情况是,已拥有一列按钮列,需要绑定至DataSet,但是仅仅显示DataSet中的某些列;
同时尽量能操作DataGrid使之隐藏这些列,而最好不要用代码来生成列(原因是这个DataGrid是用来按要求显示数据库的每个表的,如果有n个表,则要对每个表编写对应的生成列的代码,并非明智之举)
dgshowaddlist.DataBind();
DataBind();
如果要隱藏該列,visible設為false即可
用下列代码绑定的DataGrid
da=new SqlDataAdapter(sqlStr,con);
ds=new DataSet();
da.Fill(ds);
DataGrid1.DataSource=ds.Tables[0].DefaultView;
DataGrid1.DataBind();
要求:
在已有的DataGrid基础上能够访问和操作此DataGrid的某列,如设置某列隐藏
注意:
用DataGrid1.Columns[索引]来访问时报错,显示索引不存在,为何?
能详细阐明原因和指点的不吝分相送
原因及分析:
DataGri用DataBind()绑定后无法用Columns[索引]访问(原因不清楚),只能在 DataGrid1_ItemCreated()事件中设定e.Item.Cells[索引].Visible来实现,遗憾的是不能指定Cell[字段名]来访问,只能用索引