问题描述
问题,有一个GridView,Gridview内有一列Cells[1]在protectedvoidgrid__RowDataBound(objectsender,GridViewRowEventArgse)方法里设置是这样设置的e.Row.Cells[1].Text=div;div是动态构造的表格div+="<tableid="tbl_Caption"div+="<td><inputname="Time_Hearing_A"现在我要在后台为Time_Hearing_A的input控件添加事件写是这么写的HtmlInputTextnpt=(HtmlInputText)e.Row.Cells[1].FindControl("Time_Hearing_A")但这一句执行就报错,显示错误”未将对象引用到实例中“。请问有谁知道怎么取得Time_Hearing_A控件对象?请注意,我这个input控件是以这样的形式放的e.Row.Cells[1].Text=div;并不是直接在gridview内的单元格内放置的input控件。
解决方案
解决方案二:
注意,这里的div+="<td><inputname="Time_Hearing_A"里已经为input控件申明了是runat="server"类型
解决方案三:
顶啊
解决方案四:
name="Time_Hearing_A"改成id="Time_Hearing_A"看看
解决方案五:
首先,你必须通过id取,而不是name另外,加上runat如果你打算精确控制布局,用GridView是不行的,用Repeater,如果你熟悉js,可以用Repeater实现GridView的全部功能,更好的是,你能控制每一部分。
解决方案六:
或者Request.Params["Time_Hearing_A"]
解决方案七:
引用3楼dd__dd的回复:
name="Time_Hearing_A"改成id="Time_Hearing_A"看看
id我其实程序里也写了,只是这里没写出来。不过一样没用还是报“未将对象引用到实例中”
解决方案八:
FindControl('')找的是控件的Id属性,在你构造<inputname="Time_Hearing_A">时再加上一个id属性如下<inputname="Time_Hearing_A"id="Time_Hearing_A">
解决方案九:
引用5楼dd__dd的回复:
或者Request.Params["Time_Hearing_A"]
这个只是取值,我要的是取得这个对象,并对其添加事件
解决方案十:
我再说一下1.id我已经写了,报同样的错2.runat="server"我也写了3.如果Gridview内绑定input的模板列,那么这个input控件我在后台用findcontrol是能取到的问题是,现在我这里用的是e.Row.Cells[1].Text=div,就是说gridview内的第2个单元格内我用一个div层来实现具体内容的,而input控件是放在div里的。这个时候,用HtmlInputTextnpt=(HtmlInputText)e.Row.Cells[1].FindControl("Time_Hearing_A")这个语句取控件,一直是报“未将对象引用到实例”的错。
解决方案十一:
看来这个问题难倒大家了