無論是在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>