ASP.Net/Data Binding/BoundField
Содержание
Adding multicolumn sorting to the GridView (C#)
<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"> <script runat="server">
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) { string oldExpression = GridView1.SortExpression; string newExpression = e.SortExpression; if (oldExpression.IndexOf(newExpression) < 0) { if (oldExpression.Length > 0) e.SortExpression = newExpression + "," + oldExpression; else e.SortExpression = newExpression; } else { e.SortExpression = oldExpression; } }
</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" OnSorting="GridView1_Sorting"> <Columns> <asp:BoundField ReadOnly="True" HeaderText="CustomerID" DataField="CustomerID" SortExpression="CustomerID"></asp:BoundField> <asp:BoundField HeaderText="CompanyName" DataField="CompanyName" SortExpression="CompanyName"></asp:BoundField> <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" 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>
Adding multicolumn sorting to the GridView (VB)
<source lang="csharp">
<%@ Page Language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server">
Protected Sub GridView1_Sorting(ByVal sender As Object, ByVal e As GridViewSortEventArgs) Dim oldExpression As String = GridView1.SortExpression Dim newExpression As String = e.SortExpression If (oldExpression.IndexOf(newExpression) < 0) Then If (oldExpression.Length > 0) Then e.SortExpression = newExpression & "," & oldExpression Else e.SortExpression = newExpression End If Else e.SortExpression = oldExpression End If End Sub
</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" OnSorting="GridView1_Sorting"> <Columns> <asp:BoundField ReadOnly="True" HeaderText="CustomerID" DataField="CustomerID" SortExpression="CustomerID"></asp:BoundField> <asp:BoundField HeaderText="CompanyName" DataField="CompanyName" SortExpression="CompanyName"></asp:BoundField> <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" 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>
BoundField as GridView columns
<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"> <Columns> <asp:BoundField ReadOnly="True" HeaderText="CustomerID" DataField="CustomerID" SortExpression="CustomerID"/> <asp:BoundField HeaderText="CompanyName" DataField="CompanyName" SortExpression="CompanyName"/> <asp:BoundField HeaderText="ContactName" DataField="ContactName" SortExpression="ContactName"/> <asp:BoundField HeaderText="ContactTitle" DataField="ContactTitle" SortExpression="ContactTitle"/> <asp:BoundField HeaderText="Address" DataField="Address" SortExpression="Address"/> <asp:BoundField HeaderText="City" DataField="City" SortExpression="City"/> <asp:BoundField HeaderText="Region" DataField="Region" SortExpression="Region"/> <asp:BoundField HeaderText="PostalCode" DataField="PostalCode" SortExpression="PostalCode"/> <asp:BoundField HeaderText="Country" DataField="Country" SortExpression="Country"/> <asp:BoundField HeaderText="Phone" DataField="Phone" SortExpression="Phone"/> <asp:BoundField HeaderText="Fax" DataField="Fax" SortExpression="Fax"/> </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>
BoundField with ItemStyle
<source lang="csharp">
<%@ Page Language="C#" %> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">
<title>Formatting GridView using Styles</title>
</head> <body>
<form id="form1" runat="server">
<asp:SqlDataSource ID="productsSource" runat="server" ProviderName="System.Data.SqlClient" ConnectionString="<%$ ConnectionStrings:AdventureWorks %>" SelectCommand="Select ProductID, Name, ProductNumber, DaysToManufacture, SellStartDate from Production.Product"> </asp:SqlDataSource> <asp:GridView runat="server" ID="gridProducts" DataSourceID="productsSource" Font-Names="Verdana" Font-Size="X-Small" ForeColor="#333333" CellPadding="4" GridLines="None" AutoGenerateColumns="False"> <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> <RowStyle BackColor="#FFFBD6" ForeColor="#333333" /> <AlternatingRowStyle BackColor="White" /> <Columns> <asp:BoundField DataField="ProductID" HeaderText="ID"> <ItemStyle Font-Bold="True" BorderWidth="1" /> </asp:BoundField> <asp:BoundField DataField="Name" HeaderText="Name"> <ItemStyle Wrap="True" Width="200"/> </asp:BoundField> <asp:BoundField DataField="ProductNumber" HeaderText="Number"> <ItemStyle BackColor="LightSteelBlue" /> </asp:BoundField> <asp:BoundField DataField="DaysToManufacture" HeaderText="Days To Manufacture" /> <asp:BoundField DataField="SellStartDate" HeaderText="Sell Start Date" DataFormatString="{0:MM/dd/yyyy}" /> </Columns> </asp:GridView>
</form>
</body> </html> File: Web.config <configuration>
<appSettings/> <connectionStrings> <add name="AdventureWorks" connectionString="Data Source=localhost\SQLEXPRESS;Initial Catalog=AdventureWorks;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>
Using the BoundField for explicitly specifying Columns
<source lang="csharp">
<%@ Page Language="C#" %> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">
<title>Using the BoundField for explicitly specifying Columns</title>
</head> <body>
<form id="form1" runat="server">
<asp:SqlDataSource ID="productsSource" runat="server" ProviderName="System.Data.SqlClient" ConnectionString="<%$ ConnectionStrings:AdventureWorks %>" SelectCommand="Select ProductID, Name, ProductNumber, DaysToManufacture from Production.Product"> </asp:SqlDataSource> <asp:GridView runat="server" ID="gridProducts" DataSourceID="productsSource" AutoGenerateColumns="false"> <Columns> <asp:BoundField DataField="ProductID" HeaderText="ID" /> <asp:BoundField DataField="Name" HeaderText="Name" /> <asp:BoundField DataField="ProductNumber" HeaderText="Number" /> <asp:BoundField DataField="DaysToManufacture" HeaderText="Days To Manufacture" /> </Columns> </asp:GridView>
</form>
</body> </html>
</source>