无论是在GridView,DataList仍是Repeater控件中,其中Repeater控件,没有DataKeyNames或是DataKeyField属性,想获取记录的主键值,只好用Label或是HiddenField绑定主键字段,而后在后台OnItemDataBound获取。
虽然GridView和DataList控件有DataKeyNames和DataKeyField属性,或是某时候程序需求,一些非主键字段须要进一步函数处理而须要获取这些字段。
现Insus.NET教你们几种方法,在OnRowDataBound或是OnItemDataBound事件获取主键值或是字段值。若是是GridView控件或是DataList控件,须要设置属性DataKeyNames和DataKeyField,而Repeater控件,只能使用HiddenField控件了。函数
先来看看GridView控件:spa
<asp:GridView ID="GridView1" runat="server" DataKeyNames="ID" OnRowDataBound="GridView1_RowDataBound"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:Label ID="LabelName" runat="server" Text='<%# Eval("Name") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>
去.aspx.cs网页,写GridView1_RowDataBound事件。3d
固然想在OnRowDataBound获取主键时,不用设置DataKeyNames属性,也能够跟获取其它字段同样获取获得,下面是第二种方法:
第三种方法:code
下面是DataList控件演示,server
<asp:DataList ID="DataList1" runat="server" DataKeyField="ID" OnItemDataBound="DataList1_ItemDataBound"> <ItemTemplate> <asp:Label ID="LabelName" runat="server" Text='<%# Eval("Name") %>'></asp:Label> </ItemTemplate> </asp:DataList>
下面是Repeater控件在OnItemDataBound事件中,获取字段值。事件
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound"> <HeaderTemplate> <table cellpadding="3" cellspacing="0" style="border: 1px solid #808080; border-collapse: collapse; width: 500px;"> <tr> <td style="border: 1px solid #808080;">主键 </td> <td style="border: 1px solid #808080;">Name </td> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td style="border: 1px solid #808080;"> <%# Eval("ID") %> <asp:HiddenField ID="HiddenField1" runat="server" Value='<%# Eval("ID") %>' /> </td> <td style="border: 1px solid #808080;"> <asp:Label ID="LabelName" runat="server" Text='<%# Eval("Name") %>'></asp:Label> </td> </tr> </ItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater>