~~~~~~~~~~~自定义控件开发问题~~~~~~~~~~~~~~
自定义控件有个属性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
------解决方案--------------------占个座先
------解决方案--------------------up 目前没环境不能调试
------解决方案--------------------GridView gv = (GridView)this.FindControl(TargetControl);
会不会是这处得到的控件就为空,或者不是你指定的控件呢?
------解决方案--------------------学习
------解决方案--------------------thanks
------解决方案--------------------TargetControl 没有保留数据把。
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------从“在自定义控件中, 可以这样得到...(GridView)this.FindControl(TargetControl); ”一直到楼上的回帖,我是越看越乱,不知道有没有喜欢简洁准确的逻辑的人。
自定义控件里使用 this 可以找到“页面上另一个控件”?
------解决方案--------------------在GridView重写事件和页面中用以上方法是可以取到值的, 但在我的自定义控件
中却取不到.
——————————————————————————————————————————
这里我也不理解什么叫做“GridView重写事件”。页面中的GridView的事件处理程序(由GridView触发所执行的实践处理方法)是页面上的方法,不是GridView的方法,根本不是GridView中的事件而是GridView事件触发的代理方法。更不能说事件方法是重写了什么方法,没有重写什么。我想基本概念问题很可能造成你对this到底是什么对象(“我是谁”)的理解错误。