A HyperLinkField is useful when you need to build two page Master/Detail forms. File: Master.aspx <%@ Page Language="C#" %> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server"> <title>Master</title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView id="grdProductCategories" DataSourceID="srcProductCategories" AutoGenerateColumns="false" Runat="server"> <Columns> <asp:HyperLinkField HeaderText="Product Categories" DataTextField="Name" DataNavigateUrlFields="Id" DataNavigateUrlFormatString="Details.aspx?id={0}" /> </Columns> </asp:GridView> <asp:SqlDataSource id="srcProductCategories" ConnectionString="<%$ ConnectionStrings:Products %>" SelectCommand="SELECT Id, Name FROM ProductCategories" Runat="server" /> </div> </form> </body> </html> File: Details.aspx <%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server"> <title>Details</title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView id="grdProducts" DataSourceID="srcProducts" Runat="server" /> <asp:SqlDataSource id="srcProducts" ConnectionString="<%$ ConnectionStrings:Products %>" SelectCommand="SELECT Title,Director FROM Products WHERE CategoryId=@CategoryId" Runat="server"> <SelectParameters> <asp:QueryStringParameter Name="CategoryId" QueryStringField="id" /> </SelectParameters> </asp:SqlDataSource> </div> </form> </body> </html> File: Web.config <configuration> <connectionStrings> <add name="Products" connectionString="Data Source=.\SQLEXPRESS; AttachDbFilename=|DataDirectory|MyDatabase.mdf;Integrated Security=True;User Instance=True" /> </connectionStrings> </configuration>