日期:2014-05-18  浏览次数:20532 次

GridView控件的单元格的问题
GridView.Rows.Cells[]集合
如何来判断所绑定的控件在第几个单元格中,按顺序计算吗?

我给GridView控件绑定了5列
                                        <asp:GridView   ID= "GridView1 "   runat= "server "   AutoGenerateColumns= "False "   Height= "100% "   Width= "100% "   AllowPaging= "True "   OnPageIndexChanging= "GridView1_PageIndexChanging "   OnRowDataBound= "GridView1_RowDataBound "   PageSize= "5 ">
<Columns>
<asp:TemplateField   HeaderText= "选择 ">
<ItemTemplate>
            <input   id= "cbxSelect "   value= ' <%#DataBinder.Eval(Container.DataItem, "name ")   %> '   runat=server   onclick= "AddRemoveValues(this) "   type= "checkbox "   />
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField   HeaderText= "编号 ">
<ItemTemplate>
        <asp:Literal   ID= "llID "   runat= "server "   Text= ' <%#   Eval( "id ")   %> '>
</asp:Literal>
</ItemTemplate>
</asp:TemplateField>
                                                       
<asp:TemplateField   HeaderText= "姓名 ">
<ItemTemplate>
      <asp:Literal   ID= "llName "   runat= "server "   Text= ' <%#   Ev( "name "> '>
</asp:Literal>
</ItemTemplate>
</asp:TemplateField>
    <asp:BoundField   DataField= "sex "   HeaderText= "性别 "   />
    <asp:BoundField   DataField= "JoinTime "   HeaderText= "入校时间 "   />
        </Columns>
</asp:GridView>

我在RowDataBound事件中
通过e.Row.Cells[1].FindControl( "llName ")可以找到绑定的第3列的控件
为什么这里不是找到第2列   绑定的控件
通过e.Row.Cells[0].FindControl( "cbxSelect ")可以找到绑定到第1列的控件

请大虾门详细的介绍一下,GridView控件Row内的Cells编号到底是如何分配的?
希望能够讲的详细些,谢谢

------解决方案--------------------
gridview的列序数都是从0开始,不管你是模版列普通帮定列,按钮列都算是一列,按照在其属性弹出框中放置的顺序或者直接查看设计页面html代码可以推算出每列的序数
------解决方案--------------------
e.Row.Cells[1].FindControl( "llName ")
===========
这是一个很大的误区, 不知道谁教的

使用 FindControl 就是为了避免在 Cell 里面找,

直接 e.Row.FindControl( "llName ") 就可以了

FindControl 在当前命名容器中查找目标控件