vs2013使用VB编写gridview的rowupdating事件时无法findcontrol找到对应控件

[复制链接]
查看11 | 回复9 | 2021-1-27 06:07:44 | 显示全部楼层 |阅读模式
s2013使用VB编写gridview的rowupdating事件时,在窗口中编辑后,无法进行更新,请帮忙解答
报错如下:
未将对象引用设置到对象的实例。
说明:执行当前Web请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息:System.NullReferenceException:未将对象引用设置到对象的实例。
源错误:
行160:DimsqlstrAsString
行161:DimwooAsTextBox=CType(GridView1.Rows(e.RowIndex).FindControl("工程名称(必填)"),TextBox)//错误所在行
行162:Dimstr1AsString=woo.Text
行163:
行164:
断点调测发现正在编辑行(标黄处)的gridview.cell下确实有子控件,非编辑行就没有,是否有命令能查询到该子控件的ID?通过查看网页的HTML代码能找到该子控件是个textbox,有名字,但是gridview.cells.findcontrol(控件名字)结果却是null,究竟怎么样才能正确获取子控件的文本内容,从而实现gridview编辑后的更新呢
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:07:44 | 显示全部楼层
贴出你的前台代码,让我们看下,是不是写的有问题。另外你页面有没有用到页面模版之类的的(masterpage之类的),这样的话控件的ID就不是你现在的ID了。
最好发一下代码前台和后台的都发一下,你有自己定义EditTemplate然后绑定的?还是直接用的绑定的。
如果是上述的问题的话,
解决方法(将控件ID变成静态类型在控件(前台)中加上属性ClientIDMode="Static")

回复

使用道具 举报

千问 | 2021-1-27 06:07:44 | 显示全部楼层
tohuangjin118:感谢答复,我看了下是之前的列不是模板列,我再gridview把列转换成模板后可以找到控件的ID,接下来又遇到一个问题,就是我点击“更新”成功更改了值后,无法自动返回到gridview那页,而会报错,报错原因我看了下,是由于又找不到那个控件了,我查了下应该是和我的fresh(刷新gridview绑定的数据)函数有关系,但不知道具体原因在哪里,如果不接fresh()不会报错,但会停留在编辑的那个页面。我的updating函数和fresh函数如下
sqlstr="updatesheet4set工程名称(必填)='"&CType(GridView1.Rows(e.RowIndex).FindControl("TextBox2"),TextBox).Text.ToString&"'whereID="&GridView1.DataKeys(e.RowIndex).Value.ToString
'MsgBox(sqlstr)
conn.Execute(sqlstr)
conn.Close()
conn=Nothing
MsgBox("更新成功,请点击刷新按钮返回")
GridView1.EditIndex=-1
fresh()
ProtectedSubfresh()
DimConAsOleDbConnection,pathAsString
DimdaAsOleDbDataAdapter,dsAsNewDataSet()
path=Server.MapPath("./")
path=Left(path,path.Length-5)
Con=NewOleDbConnection()
Con.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+path+("/工程预约.mdb")
da=NewOleDbDataAdapter("select*fromsheet4orderby开始时间(必填)",Con)
da.Fill(ds,"sheet4")
GridView1.DataSource=ds.Tables("sheet4").DefaultView
GridView1.DataBind()

EndSub
回复

使用道具 举报

千问 | 2021-1-27 06:07:44 | 显示全部楼层
你是在什么时候触发的updating事件?是点击的保存按钮吗?(这个也可以自定义)
另外你更新成功以后
先设定GridView1.EditIndex=-1
让后重新绑定gridview就可以了。
下面这个就不必要弹出来了,再说了这个应该是注册脚本的吧,不然你只能在你本地弹出来。
MsgBox("更新成功,请点击刷新按钮返回")
回复

使用道具 举报

千问 | 2021-1-27 06:07:44 | 显示全部楼层
你把前台的gridview控件代码发过来吧,字段名字你直接删掉好了。
我看下你前台怎么写的?
回复

使用道具 举报

千问 | 2021-1-27 06:07:44 | 显示全部楼层
前台是这样的


[I]
[/I]




'>
[I]
'>
[/I]

回复

使用道具 举报

千问 | 2021-1-27 06:07:44 | 显示全部楼层
前台没有问题呀。
另外你这个fresh方法没有找控件的呀,怎么会报找控件的错误。

fresh方法再贴一下,这个绑定的方法,你一开始绑定不用吗?一开始报错了没有?
回复

使用道具 举报

千问 | 2021-1-27 06:07:44 | 显示全部楼层
没有报错,而且我的取消函数只有如下代码都没问题,可以退回gridview
GridView1.EditIndex=-1
fresh()
,你邮箱多少,我把文件发给你看看行么
回复

使用道具 举报

千问 | 2021-1-27 06:07:44 | 显示全部楼层
回复

使用道具 举报

千问 | 2021-1-27 06:07:44 | 显示全部楼层
顺便说下用zip包发我,不然我解压不了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行