asp.net中隐藏GridView的某一列
我写的代码:Conn.Open();SqlCommandsqlcommand=newSqlCommand("select*fromroomwherezhuangtai='...
我写的代码:
Conn.Open();
SqlCommand sqlcommand = new SqlCommand("select * from room where zhuangtai='空闲'", Conn);
SqlDataReader da = sqlcommand.ExecuteReader();
this.GridView1.DataSource = da;
this.GridView1.DataBind();
GridView1.HeaderRow.Cells[0].Text = "房间号"; GridView1.HeaderRow.Cells[1].Text = "房间类别";
GridView1.HeaderRow.Cells[0].Text = "状态";GridView1.HeaderRow.Cells[0].Text = "单价(元/天)";
GridView1.Columns[4].Visible = false;
da.Close();
数据库中room有5列,我想把第5列隐藏,上面代码运行提示“超出索引超出范围”,问题出在哪啊?还有那个改变列名显示有没有问题啊?我是菜鸟,请说详细些 谢谢
GridView1.HeaderRow.Cells[0].Text = "房间号";
GridView1.HeaderRow.Cells[1].Text = "房间类别";
GridView1.HeaderRow.Cells[2].Text = "状态";
GridView1.HeaderRow.Cells[3].Text = "单价(元/天)";
这是这样的 上面写错了~~但还是出现同样的问题~~ 展开
Conn.Open();
SqlCommand sqlcommand = new SqlCommand("select * from room where zhuangtai='空闲'", Conn);
SqlDataReader da = sqlcommand.ExecuteReader();
this.GridView1.DataSource = da;
this.GridView1.DataBind();
GridView1.HeaderRow.Cells[0].Text = "房间号"; GridView1.HeaderRow.Cells[1].Text = "房间类别";
GridView1.HeaderRow.Cells[0].Text = "状态";GridView1.HeaderRow.Cells[0].Text = "单价(元/天)";
GridView1.Columns[4].Visible = false;
da.Close();
数据库中room有5列,我想把第5列隐藏,上面代码运行提示“超出索引超出范围”,问题出在哪啊?还有那个改变列名显示有没有问题啊?我是菜鸟,请说详细些 谢谢
GridView1.HeaderRow.Cells[0].Text = "房间号";
GridView1.HeaderRow.Cells[1].Text = "房间类别";
GridView1.HeaderRow.Cells[2].Text = "状态";
GridView1.HeaderRow.Cells[3].Text = "单价(元/天)";
这是这样的 上面写错了~~但还是出现同样的问题~~ 展开
3个回答
展开全部
获取 GridView 中隐藏列的值
在 GridView 中,我们时常会把作为ID的列隐藏起来,如果在列编辑中将该列的 Visible 值设为 false,是可以实现隐藏该列了,但是却取不到隐藏列的值了。
我们可以在 GridView 的 RowCreated 事件中写入以下代码:
void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
e.Row.Cells[0].Visible = false;
}
可以实现隐藏第0列,同时也可以用 GridView3.Rows[i].Cells[0].Text 来获取该列的值,但这样做后, GridView 又不能分页了。
经过反复试验,找到了一个好的解决方法:
在 GridView 的 DataKeyNames 属性中,设置主键字段名称数组,可以多个字段,多个字段用逗号隔开。
如: GridView1.DataKeyNames="UserID,UserName";
用以下代码取值:
string UserID = GridViews1.DataKeys[i]["UserID"].ToString() ;
其中 i 为 GridView 中的 Rows 索引。从0开始到 GridView.Rows.Count-1 结束
如果关键字如有一个字段:GridView1.DataKeyNames="UserID“ ;
可以简化为这样取值:GridView1.DataKeys[i].Value.ToString()
下面给出一个遍历 GridView 的例子:
for ( int i=0 ; i<GridView3.Rows.Count ; i++)
{
string UserID = GridViews1.DataKeys[i]["UserID"].ToString() ;
}
在 GridView 中,我们时常会把作为ID的列隐藏起来,如果在列编辑中将该列的 Visible 值设为 false,是可以实现隐藏该列了,但是却取不到隐藏列的值了。
我们可以在 GridView 的 RowCreated 事件中写入以下代码:
void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
e.Row.Cells[0].Visible = false;
}
可以实现隐藏第0列,同时也可以用 GridView3.Rows[i].Cells[0].Text 来获取该列的值,但这样做后, GridView 又不能分页了。
经过反复试验,找到了一个好的解决方法:
在 GridView 的 DataKeyNames 属性中,设置主键字段名称数组,可以多个字段,多个字段用逗号隔开。
如: GridView1.DataKeyNames="UserID,UserName";
用以下代码取值:
string UserID = GridViews1.DataKeys[i]["UserID"].ToString() ;
其中 i 为 GridView 中的 Rows 索引。从0开始到 GridView.Rows.Count-1 结束
如果关键字如有一个字段:GridView1.DataKeyNames="UserID“ ;
可以简化为这样取值:GridView1.DataKeys[i].Value.ToString()
下面给出一个遍历 GridView 的例子:
for ( int i=0 ; i<GridView3.Rows.Count ; i++)
{
string UserID = GridViews1.DataKeys[i]["UserID"].ToString() ;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询