ASP.NET Tutorial/Data Binding/HyperLinkField
Adding a HyperlinkField control to the GridView
<source lang="csharp">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">
<title>Untitled Page</title>
</head> <body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" Runat="server" DataSourceID="SqlDataSource1" DataKeyNames="CustomerID" AutoGenerateColumns="False" AllowSorting="True" AllowPaging="True" PageSize="10"> <PagerStyle HorizontalAlign="Center"></PagerStyle> <PagerSettings Position="TopAndBottom" FirstPageText="Go to the first page" LastPageText="Go to the last page" Mode="NextPreviousFirstLast"> </PagerSettings> <Columns> <asp:BoundField ReadOnly="True" HeaderText="CustomerID" DataField="CustomerID" SortExpression="CustomerID"></asp:BoundField> <asp:HyperLinkField HeaderText="CompanyName" DataNavigateUrlFields="CustomerID,Country" SortExpression="CompanyName" DataNavigateUrlFormatString= "http://www.foo.ru/Customer.aspx?id={0}&country={1}" DataTextField="CompanyName"> </asp:HyperLinkField> <asp:BoundField HeaderText="ContactName" DataField="ContactName" SortExpression="ContactName"></asp:BoundField> <asp:BoundField HeaderText="ContactTitle" DataField="ContactTitle" SortExpression="ContactTitle"></asp:BoundField> <asp:BoundField HeaderText="Address" DataField="Address" SortExpression="Address"></asp:BoundField> <asp:BoundField HeaderText="City" DataField="City" SortExpression="City"></asp:BoundField> <asp:BoundField HeaderText="Region" NullDisplayText="N/A" DataField="Region" SortExpression="Region"></asp:BoundField> <asp:BoundField HeaderText="PostalCode" DataField="PostalCode" SortExpression="PostalCode"></asp:BoundField> <asp:BoundField HeaderText="Country" DataField="Country" SortExpression="Country"></asp:BoundField> <asp:BoundField HeaderText="Phone" DataField="Phone" SortExpression="Phone"></asp:BoundField> <asp:BoundField HeaderText="Fax" DataField="Fax" SortExpression="Fax"></asp:BoundField> </Columns> </asp:GridView> <asp:SqlDataSource ID="SqlDataSource1" Runat="server" SelectCommand="SELECT * FROM [Customers]" ConnectionString="<%$ ConnectionStrings:AppConnectionString1 %>" DataSourceMode="DataSet" ConflictDetection="CompareAllValues" EnableCaching="True" CacheKeyDependency="MyKey" CacheDuration="Infinite"> </asp:SqlDataSource>
</form>
</body> </html>
File: Web.config <configuration>
<appSettings/> <connectionStrings> <add name="AppConnectionString1" connectionString="Data Source=localhost\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings> <system.web> <compilation debug="true" strict="false" explicit="true"> <codeSubDirectories> <add directoryName="VB"></add> <add directoryName="CS"></add> </codeSubDirectories> </compilation> <pages> <namespaces> <clear/> <add namespace="System"/> <add namespace="System.Collections"/> <add namespace="System.Collections.Specialized"/> <add namespace="System.Configuration"/> <add namespace="System.Text"/> <add namespace="System.Text.RegularExpressions"/> <add namespace="System.Web"/> <add namespace="System.Web.Caching"/> <add namespace="System.Web.SessionState"/> <add namespace="System.Web.Security"/> <add namespace="System.Web.Profile"/> <add namespace="System.Web.UI"/> <add namespace="System.Web.UI.WebControls"/> <add namespace="System.Web.UI.WebControls.WebParts"/> <add namespace="System.Web.UI.HtmlControls"/> </namespaces> </pages> <authentication mode="Windows"></authentication> <identity impersonate="true"/> </system.web>
</configuration></source>
Use a HyperLinkField to create a link to another page
<source lang="csharp">
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">
<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" />
</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">
<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>
</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></source>
Use HyperLinkFields when working with frames
<source lang="csharp">
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">
<style type="text/css"> html { background-color:silver; } .content { width:500px; margin:auto; background-color:white; } .column { padding:10px; float:left; } #FrameDetails { width:100%; height:400px; } </style> <title>Frame Master</title>
</head> <body>
<form id="form1" runat="server">
<asp:GridView id="grdProducts" DataSourceID="srcProducts" AutoGenerateColumns="false" Runat="server"> <Columns> <asp:HyperLinkField HeaderText="Products" DataTextField="Title" DataNavigateUrlFields="Id" DataNavigateUrlFormatString="FrameDetails.aspx?id={0}" Target="FrameDetails" /> </Columns> </asp:GridView> <asp:SqlDataSource id="srcProducts" ConnectionString="<%$ ConnectionStrings:Products %>" SelectCommand="SELECT * FROM Products" Runat="server" />
<iframe name="FrameDetails" id="FrameDetails"></iframe>
</form>
</body> </html> File: FrameDetails.aspx <%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">
<title>Frame Details</title>
</head> <body>
<form id="form1" runat="server">
<asp:DetailsView id="dtlProduct" DataSourceID="srcProductDetails" Runat="server" /> <asp:SqlDataSource id="srcProductDetails" ConnectionString="<%$ ConnectionStrings:Products %>" SelectCommand="SELECT Title, Director, InTheaters FROM Products WHERE Id=@ProductId" Runat="server"> <SelectParameters> <asp:QueryStringParameter Name="ProductId" QueryStringField="id" /> </SelectParameters> </asp:SqlDataSource>
</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></source>