软件下载 | 资讯教程 | 最近更新 | 下载排行 | 一键转帖 | 发布投稿
您的位置:最火下载站 > 网络编程 > ASP.NET > asp.net gridview.findcontrol的问题

asp.net gridview.findcontrol的问题

  烈火建站学院(LieHuo.Net)网络编程 最近在用GridView的时候用到FindControl()在TemplateField中发现总是Find不到,在网上搜索了一下,发现很多朋友跟我遇到的问题一样,而且网上很多人的解决方法不是很好,我自己总结了一下:

  对于在RowDataBound中Find,可以用if (e.Row.RowType == DataControlRowType.DataRow)来限制Find的范围,因为Find默认是在HeaderTemplate中找,如果不限定范围,在HeaderTemplate中找不到,自然就返回null,然后就出错了,DataControlRowType枚举中的DataRow确定是数据行.

   另一个是在RowCommand中,我发现遇到这个问题的朋友貌似比上一个要多,在RowCommand中,如果使用GridView默认的模式,e.CommandArgument自动棒定为该行的Index,这时候只要指定gridview1.Rows[Convert.ToInt32(e.CommandArgument)].FindControl("xxx")就可以了,但是如果转化为Template,e.CommandArgument并不会自动绑定任何值,需要手动绑定,可以在<ItemTemplate></ItemTemplate>手动写CommandArgument="<%# ((GridViewRow) Container).RowIndex %>",把这个行的 Index绑定绑定到该e.CommandArgument就可以了

  .很多初学者在这里不明白为什么要这么做,其实我也是初学者,简单的说一下,就是行是根据数据循环的,每一行都有同样的控件,如果不指定行的Index,简单的写gridview1.findcontrol("xxx"),IDE并不知道要找哪个控件所以要指定行号.

 

    相关阅读
    网友评论
    栏目导航
    推荐软件