GridView 中隐藏列 Visible=false会不能正常取值 ???????

daydayday123 2007-07-10 01:08:16
GridView1.Columns[0].Visible = false;
GridView1.Columns[1].Visible = false;
----------------------------
后面取值
string CompanyID = GridView1.Rows[rowid].Cells[1].Text;
string uid = GridView1.Rows[rowid].Cells[0].Text;
这样会取到空值 ....但要设为true 时则能得到值 ....
我怎样才能把这两列隐藏起来...但也能取到值 ~~~~!
...全文
1968 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
dimgqixp 2010-08-09
  • 打赏
  • 举报
回复
GridView列隐藏后不能取值?? 没用过,不知道。经常用DataGrid。 想不到"DataGrid" "GridView" "DataGridView" 三者什么关系呢...
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xiahouwen 的回复:]
width=0可以
[/Quote]

绝对支持这个!
panzhige 2010-08-09
  • 打赏
  • 举报
回复
楼上都说了那么多了、我就看看吧
linda_liuyu 2010-08-09
  • 打赏
  • 举报
回复
GridView 是可以获取隐藏字段值

后置代码
GridViewRow.FindControl( "MyControlID ")

hu_86727515 2010-08-09
  • 打赏
  • 举报
回复
获取gridview 隐藏列

在Gridview 的 RowCreated事件中书写如下代码:


void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow ||
e.Row.RowType == DataControlRowType.Header)
{
//隐藏第1列
e.Row.Cells[0].Visible = false;
//可以根据需要隐藏更多的列
}
}因为在RowCreated事件(隐藏)在绑定时候发生,所以这样就即能将数据绑定到列上,又隐藏该列,所以可以访问到隐藏列的值。 protected void gvUnit_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//获取隐藏列的值
if (e.Row.Cells[1].Text == "xxx")
{
//TODO
}
}
}
  • 打赏
  • 举报
回复
sayoath 2010-08-09
  • 打赏
  • 举报
回复
LZ如果不考虑安全问题。。使用CSS隐藏就好了,。
LONGZHEZHILONG 2010-08-09
  • 打赏
  • 举报
回复
设置visible=false的时候,ASP.NET将不会生成这个cell的。

最好的办法是用css控制这个格子(cell)的display=none,这样会生成不过不显示,能实现您的要求
ChaoYang0502 2010-08-09
  • 打赏
  • 举报
回复
你可以把要隐藏的列中放置一个label控件,把值赋到控件的text属性上,然后在后台代码处理中,查找这个控件,找到控件后取其TEXT值即可

一切为了你 2010-08-09
  • 打赏
  • 举报
回复
 protected void GVList_RowDataBound(object sender, GridViewRowEventArgs e)
  {
  //隐藏不必要的列
  if ((e.Row.RowType == DataControlRowType.DataRow) || (e.Row.RowType == DataControlRowType.Header) || (e.Row.RowType == DataControlRowType.Footer))
  {
  e.Row.Cells[0].Visible = false;
  e.Row.Cells[3].Visible = false;
  }
  }
  这是迄今为止最简洁的解决方法了。
snoopymin 2007-10-31
  • 打赏
  • 举报
回复
用CommandArgument也是可以的
在rowcommand里用e.CommandArgument取值处理
xujunsweet 2007-10-31
  • 打赏
  • 举报
回复
不会取不到值啊
在gridview的RowCreated事件中写 e.Row.Cells[11].Visible = false;

然后在 protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Cells[11].Text 这里是可以取值的

}
chinamat 2007-10-30
  • 打赏
  • 举报
回复
“卖女孩的小火柴”的方法是对的,谢谢了。
godgreat 2007-07-11
  • 打赏
  • 举报
回复
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
e.Row.Cells[0].Visible = false;
}

这是事件里面写,肯定能取到值
hm8030 2007-07-11
  • 打赏
  • 举报
回复
是可以獲取值的,和正常顯示一樣獲取,只是每次在綁定時,必須先讓該隱藏列顯示然後在綁定。
yaojian524 2007-07-11
  • 打赏
  • 举报
回复
是我就把宽设成0
daydayday123 2007-07-11
  • 打赏
  • 举报
回复
protected void GridView2_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType == DataControlRowType.Header)
{
e.Row.Cells[0].Visible = false;
e.Row.Cells[1].Visible = false;
e.Row.Cells[2].Visible = false;
}
}
这样的才能隐藏多列...
xeppp 2007-07-10
  • 打赏
  • 举报
回复
有道理  用模板列就能找到了 不用BoundColumn
jb7456 2007-07-10
  • 打赏
  • 举报
回复
学习
Jinglecat 2007-07-10
  • 打赏
  • 举报
回复
lizh0103 的方法也是可以的,学到了,呵呵

事实上,实际项目中,我几乎没有用
GridViewRow.Cells[cellIndex].Text
以及
GridViewRow.Cells[cellIndex].Controls
的方式访问,

因为 cellIndex 是一个索引值,意味着,如果你添加、删除GridView/DataGrid 的列时,此值就需要修改,保证同步,N 烦啊

我更喜欢,使用模板列
GridViewRow.FindControl("MyControlID")
与索引访问相比,对牺牲一定的性能,但是这是完全可以忽略的

对于 GridView.DataKeys 可以存储多个键值,更是优先选择之
加载更多回复(15)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧