~~~~~~~~~~~自定义控件开发问题~~~~~~~~~~~~~~

ChengKing 2007-05-10 07:36:53
自定义控件有个属性TargetConrol, 设置其值为页面上另一个控件的ID字串.
比如这样设置: TargetControl = "GridView1"后,
在自定义控件中, 可以这样得到GridView的引用:
GridView gv = (GridView)this.FindControl(TargetControl);

那么这时用列名的方式访问GridView中的数据:
string str = ((System.Data.DataRow)gv.Rows[0].DataItem)["CategoryID"].ToString();

string str = gv.Rows[0]["CategoryID"].ToString();
都编译错误或取不到值, GridView是肯定有数据的.

说明一点:
在GridView重写事件和页面中用以上方法是可以取到值的, 但在我的自定义控件
中却取不到.

并且把这些代码放到几个事件中都编译不通过.

另外, 用gv.Rows[0].Cells[1]是可以访问的, 但这里一定要用列名(如: CategoryID)访问GridView中的数据.

请问应该在什么事件中? 怎样写代码可以用列名的方式访问GridView中的数据?



Thanks/King


...全文
321 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChengKing 2007-05-13
  • 打赏
  • 举报
回复
Thank you.
ChengKing 2007-05-12
  • 打赏
  • 举报
回复
To sp1234:
建议你先去测试一下, 是否 this.FindControl 能够取得页面上控件引用, 再下结论.
不要凭感觉下结论.
  • 打赏
  • 举报
回复
在GridView重写事件和页面中用以上方法是可以取到值的, 但在我的自定义控件
中却取不到.
——————————————————————————————————————————
这里我也不理解什么叫做“GridView重写事件”。页面中的GridView的事件处理程序(由GridView触发所执行的实践处理方法)是页面上的方法,不是GridView的方法,根本不是GridView中的事件而是GridView事件触发的代理方法。更不能说事件方法是重写了什么方法,没有重写什么。我想基本概念问题很可能造成你对this到底是什么对象(“我是谁”)的理解错误。
  • 打赏
  • 举报
回复
从“在自定义控件中, 可以这样得到...(GridView)this.FindControl(TargetControl); ”一直到楼上的回帖,我是越看越乱,不知道有没有喜欢简洁准确的逻辑的人。

自定义控件里使用 this 可以找到“页面上另一个控件”?
自然框架 2007-05-10
  • 打赏
  • 举报
回复
TargetControl 没有保留数据把。
shancun 2007-05-10
  • 打赏
  • 举报
回复
thanks
bzhi268 2007-05-10
  • 打赏
  • 举报
回复
学习
ChengKing 2007-05-10
  • 打赏
  • 举报
回复
To weizhuangzhi(壮志 已经有五个山头了):
gv不为空. 能够找到控件, 并且GridView中有数据.

补充一下, 在GridView自己的事件中可以通过:
e.Item对象按列访问, 但这里是用:
GridView gv = (GridView)this.FindControl(TargetControl);检索到的,
不能用列访问.
weizhuangzhi 2007-05-10
  • 打赏
  • 举报
回复
GridView gv = (GridView)this.FindControl(TargetControl);
会不会是这处得到的控件就为空,或者不是你指定的控件呢?
Iceguy 2007-05-10
  • 打赏
  • 举报
回复
up 目前没环境不能调试
阿Deee 2007-05-10
  • 打赏
  • 举报
回复
占个座先

62,039

社区成员

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

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

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

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