1.GridView中默认的是BoundField在后台可用GridView1.Rows[0].Cells[0]来取值。
2.如果是其他列如HyperLinkField,ButtonField,CheckBoxField则要在后台进行转化。
转化方法如下:
((HyperLink)GridView1.Rows[RowIndex].Cells[0].Controls[0]).Text
对应的Field转化为相应的类型,简单的方法就是Field的类型名如ButtonField去掉Field就OK了
3.模板列:
<asp:TemplateField HeaderText="取消原因" >
<ItemTemplate>
<asp:TextBox ID="txtCnclRsn" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
此时后台取值如下:
string reason = ((TextBox)GridView1.Rows[RowIndex].FindControl("txtCnclRsn")).Text.Trim();
也是转化为相应的类型。
至于为什么2中要用Contorls来取,就感到奇怪,难道一个Cell中可以放多个对应的Field?