一个DataRowView的问题,感到困惑……

hwkknd 2004-09-08 05:30:24
代码如下:
1)ItemDataBound事件:
private void dataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
DataRowView Drv = (DataRowView)e.Item.DataItem ;
……
}

2)UpdateCommand事件:
private void dataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataRowView Drv = (DataRowView)e.Item.DataItem ;
……
}

3)
DataRowView Drv = (DataRowView)dataGrid1.SelectedItem.DataItem
……

运行结果:
ItemDataBound 中可以正确的得到DataRowView对象,其它两种方法中均得不到结果……

困惑:
在 ItemDataBound 事件中 e.Item 与UpdateCommand 事件中的e.Item 及dataGrid1.SelectedItem同为DataGridItem对象,为什么会得不到相同的结果呢??难道这三个不可以做为同一类来理解??

另:何处有关于例如EventArgs、DataGridCommandEventArgs、DataGridPageChangedEventArgs等这些类的详细说明文档?我装的是C#Builder,里面的Help应该也是调用.NET Help的吧,看得我稀里糊涂…
有没有能够明明白白搞清楚这些类的朋友谈谈你的学习过程及方法…
谢谢!
...全文
148 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hwkknd 2004-09-09
  • 打赏
  • 举报
回复
收了!了解!!
谢谢!!!
Eddie005 2004-09-09
  • 打赏
  • 举报
回复
不好意思,goody9807() 似乎没有击中要害
Eddie005 2004-09-09
  • 打赏
  • 举报
回复
说一下asp.net下DataGrid绑定的真实过程就很明白了
在服务器端获得数据源,根据数据源生成一个需要显示的html的table传到客户端,
当客户端提交回传服务器的时候,数据源早就烟消云散了....
也就是说,仅仅在绑定的那一刻,你才能获取DataGrid的数据源
goody9807 2004-09-09
  • 打赏
  • 举报
回复
ItemDataBound嘛,只要执行了DataBind方法,就会马上激发这个事件。
ItemCommand、CancelCommand、DeleteCommand、EditCommand、UpdateCommand
也就是DataGrid中,点击Button、LinkButton后执行的事件,执行的事件取决于按钮的CommandName。其实最主要的一个是ItemCommand,而后面四个都只是ItemCommand的一小部分,
比如一个按钮的CommandName为"Cancel",当返回后,首先执行的是ItemCommand事件,然后才是CancelCommand事件。
goody9807 2004-09-09
  • 打赏
  • 举报
回复
Items
俗话说,最后的都是最重要的,把Items作为最后一个属性来介绍,正式基于这样的理由。
Items是DataGridItem的集合,可以遍历当前DataGrid中显示数据的DataGridItem。
5.1、DataGridItem
每一个DataGridItem就是DataGrid中显示的一行,其中包括:
Header DataGrid 控件的标题部分
Item DataGrid 控件中的项
AlternatingItem DataGrid 控件中的交替项
SelectedItem DataGrid 控件中的选定项(由SelectedIndex设置,通过SelectedItem属性或者Items[SelectedIndex]来读取)
EditItem DataGrid 控件中处于编辑状态的项(由EditItemIndex设置,通过Items[EditItemIndex]来读取)
Separator DataGrid 控件中项之间的分隔符
Footer DataGrid 控件的脚注部分
Pager DataGrid 控件的页选择节
注意,DataGrid的Items属性中不会包含Header、Footer、Pager这三类DataGridItem的。
5.1.1、DataGridItem的属性
ItemIndex —— 得到行在Items中的索引
ItemType —— 返回行的类型,也就是上面列出的Header、Item、...、Pager
Cells —— 返回行包含的所有TableCell(不管是显示声明的,还是自动生成的,不管是可以看见的,还是隐藏掉的),通过TableCell,可以读取Cell中显示的文本、包含的控件
严重注意:只有BoundColumn列和自动生成列,才可以通过TableCell.Text属性读取显示的文本。HyperLinkColumn、ButtonColumn、EditCommandColumn都需要将目标控件转换成相应的控件。
hwkknd 2004-09-09
  • 打赏
  • 举报
回复
石沉大海???

62,074

社区成员

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

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

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

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