ASP.NET Tutorial/Data Binding/HyperLinkField

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

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>