在gridview中的在gridview_RowCreated如何获取单元格的值

Francesco_zzw 2009-11-10 02:02:43
我用如下两种方法都无法获取单元格的值

e.Row.Cells[0].Text.ToString().toString()//得到空值.取到的TEXT值为空.

((TextBox)e.Row.Cells[0].Controls[0]).Text.toString()//报错,之后发现e.Row.Cells[0].Controls.count = 0......

不知道在gridview_RowCreated的时候如何获取单元格的值???
...全文
674 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Francesco_zzw 2009-11-10
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 namhyuk 的回复:]
在RowCeated事件处理代码里取得单元格的值是不合乎逻辑的。
RowCreated是告诉你,为GridView的数据行(也包括表头和footer)生成了一个GridViewRow,而此时数据还没有填充到该GridViewRow里。
直到RowDataBound事件发生时,数据才会填充进GridViewRow里。
[/Quote]

你说的对,谢谢指导.
namhyuk 2009-11-10
  • 打赏
  • 举报
回复
在RowCeated事件处理代码里取得单元格的值是不合乎逻辑的。
RowCreated是告诉你,为GridView的数据行(也包括表头和footer)生成了一个GridViewRow,而此时数据还没有填充到该GridViewRow里。
直到RowDataBound事件发生时,数据才会填充进GridViewRow里。
Francesco_zzw 2009-11-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ljs0203 的回复:]
这个是GridView创建行的事件,都还没有创建呢,你就获得它的值,是不是应该换个事件试试?
[/Quote]

哦,换到rowbound事件就可以了,非常感谢..

也谢谢sd1840888,让我知道了datakey.
sd1840888 2009-11-10
  • 打赏
  • 举报
回复
DataKeys设置你想获取值的字段
该字段可以在你前台gridview里不显示
wxd_860825 2009-11-10
  • 打赏
  • 举报
回复
就不要放在别的事件下了
wxd_860825 2009-11-10
  • 打赏
  • 举报
回复
如果仅是获取单元格内的值
string abc = this.GridView1.Rows[0].Cells[0].Text.ToString();
Response.Write(abc);

把这句添加到绑定gridview方法下
Francesco_zzw 2009-11-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sd1840888 的回复:]
在设计模式里gridview的属性面板里设置

设置后可以这样写:View.DataKeys[e.Row.RowIndex].Values["SubjectID"].ToString())
如果为一个时可用 View.DataKeys[e.Row.RowIndex].Value.ToString())。

[/Quote]

设置DataKeys字段的时候,填写的字段是和DATAFIELD的字段一致么?
wxd_860825 2009-11-10
  • 打赏
  • 举报
回复
首先是:获取的单元格是textbox中的,还是获取单元格的值
sd1840888 2009-11-10
  • 打赏
  • 举报
回复
在设计模式里gridview的属性面板里设置

设置后可以这样写:View.DataKeys[e.Row.RowIndex].Values["SubjectID"].ToString())
如果为一个时可用 View.DataKeys[e.Row.RowIndex].Value.ToString())。
ljs0203 2009-11-10
  • 打赏
  • 举报
回复
这个是GridView创建行的事件,都还没有创建呢,你就获得它的值,是不是应该换个事件试试?
Francesco_zzw 2009-11-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sd1840888 的回复:]
((TextBox)e.Row.Cells[0].Controls[0]).Text.toString()
这个应该没问题啊
你datakey设了没有?
[/Quote]

啊?datakey是什么?我是直接用dataset绑定的.
sd1840888 2009-11-10
  • 打赏
  • 举报
回复
((TextBox)e.Row.Cells[0].Controls[0]).Text.toString()
这个应该没问题啊
你datakey设了没有?
Francesco_zzw 2009-11-10
  • 打赏
  • 举报
回复
从调试时的调试值,显示:
e.Row.Cells[0].Text 为空

后来在网上看到用这种方式:
((TextBox)e.Row.Cells[0].Controls[0]).Text.toString()
但调试时报错:超出索引,调试:e.Row.Cells[0].Controls.count,发现为0,就是说,这个单元格就根本没有控件.
Francesco_zzw 2009-11-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhong2006 的回复:]
判断是否是gridview的数据行,
if(e.Row.RowType== DataControlRowType.DataRow)

[/Quote]

判断了

    protected void gvEmp_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onmouseover", "c=this.style.backgroundColor;this.style.backgroundColor='#ccccff'");
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=c");
e.Row.Attributes["style"] = "Cursor:hand";
e.Row.Attributes.Add("onclick", "javascript:onEmpSelected('" + txtEmpID.ClientID + "','" + e.Row.Cells[1].Text.ToString() + "','" + txtEmpName.ClientID + "','" + e.Row.Cells[2].Text.ToString() + "','" + divEmpSelect.ClientID + "');");
}
}
zhong2006 2009-11-10
  • 打赏
  • 举报
回复
判断是否是gridview的数据行,
if(e.Row.RowType== DataControlRowType.DataRow)
zhangzwa 2009-11-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhoukang0916 的回复:]
C# code//试试if(e.Row.RowType== DataControlRowType.DataRow)
{
e.Row.Cells[0].Text.ToString();
}
[/Quote]

这个跟我第一种方式有区别?一样的嘛,你能取到值?
PandaIT 2009-11-10
  • 打赏
  • 举报
回复

//试试
if(e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Cells[0].Text.ToString();
}
zhangzwa 2009-11-10
  • 打赏
  • 举报
回复
沙发

62,046

社区成员

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

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

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

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