ASP.NET Tutorial/Data Binding/DetailsView
Содержание
Bind a DetailsView control programmatically to a data source
<source lang="csharp">
<%@ Page Language="C#" %> <%@ Import Namespace="System.Collections.Generic" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <script runat="server">
public class Employee { public string _firstName; public string _lastName; public bool _retired; public string FirstName { get { return _firstName; } } public string LastName { get { return _lastName; } } public bool Retired { get { return _retired; } } public Employee(string firstName, string lastName, bool retired) { _firstName = firstName; _lastName = lastName; _retired = retired; } } void Page_Load() { Employee newEmployee = new Employee("A", "B", false); List<Employee> employees = new List<Employee>(); employees.Add(newEmployee); dtlProducts.DataSource = employees; dtlProducts.DataBind(); }
</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">
<title>Show Employee</title>
</head> <body>
<form id="form1" runat="server">
<asp:DetailsView id="dtlProducts" Runat="server" />
</form>
</body> </html></source>
Customizing the Paging Interface
<source lang="csharp">
<%@ 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>Show Pager Settings</title>
</head> <body>
<form id="form1" runat="server">
<asp:DetailsView id="dtlProducts" DataSourceID="srcProducts" AllowPaging="true" Runat="server"> <PagerSettings Mode="NextPreviousFirstLast" FirstPageText="[First Product]" LastPageText="[Last Product]" NextPageText="[Next Product]" PreviousPageText="[Previous Product]" /> </asp:DetailsView> <asp:SqlDataSource id="srcProducts" ConnectionString="<%$ ConnectionStrings:Products %>" SelectCommand="SELECT Id,Title,Director,InStock FROM Products" Runat="server" />
</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>
Displaying content when no results are returned.
<source lang="csharp">
<%@ 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" > <body>
<form id="form1" runat="server">
<asp:DetailsView id="dtlProducts" DataSourceID="srcProducts" Runat="server"> <EmptyDataTemplate>
No Matching Results!
Please select a different record.
</EmptyDataTemplate> </asp:DetailsView> <asp:SqlDataSource id="srcProducts" ConnectionString="<%$ ConnectionStrings:Products %>" SelectCommand="SELECT Id,Title,Director,InStock FROM Products WHERE Id=-1" Runat="server" />
</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>
Displaying Empty Data with the DetailsView Control
<source lang="csharp">
<%@ 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>Show Empty Data Text</title>
</head> <body>
<form id="form1" runat="server">
<asp:DetailsView id="dtlProducts" DataSourceID="srcProducts" EmptyDataText="No Matching Record!" Runat="server" /> <asp:SqlDataSource id="srcProducts" ConnectionString="<%$ ConnectionStrings:Products %>" SelectCommand="SELECT Id,Title,Director,InStock FROM Products WHERE Id=-1" Runat="server" />
</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>
Format DetailsView
<source lang="csharp">
<%@ 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">
<style type="text/css"> .products td,.products th { padding:10px; } .products { border:double 4px black; } .header { letter-spacing:8px; font:bold 16px Arial,Sans-Serif; background-color:silver; } .fieldHeader { font-weight:bold; } .alternating { background-color:#eeeeee; } .rumand { background-color:silver; } .rumand a { color:black; background-color:#eeeeee; font:14px Arials,Sans-Serif; text-decoration:none; padding:3px; border:solid 1px black; } .rumand a:hover { background-color:yellow; } .pager td { padding:2px; } </style> <title>Format DetailsView</title>
</head> <body>
<form id="form1" runat="server">
<asp:DetailsView id="dtlProducts" DataSourceID="srcProducts" AutoGenerateInsertButton="true" AllowPaging="true" GridLines="None" HeaderText="Products" CssClass="products" HeaderStyle-CssClass="header" FieldHeaderStyle-CssClass="fieldHeader" AlternatingRowStyle-CssClass="alternating" CommandRowStyle-CssClass="command" PagerStyle-CssClass="pager" Runat="server" /> <asp:SqlDataSource id="srcProducts" ConnectionString="<%$ ConnectionStrings:Products %>" SelectCommand="SELECT Title,Director,InStock FROM Products" InsertCommand="INSERT Products (Title,Director,InStock) VALUES (@Title,@Director, Runat="server" />
</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>
Inserting a record with the DetailsView control.
<source lang="csharp">
<%@ 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">
<script type="text/javascript"> function showInsert() { var divInsert = document.getElementById("divInsert"); divInsert.style.display = "block"; } </script> <title>Show Insert Mode</title>
</head> <body>
<form id="form1" runat="server">
<asp:GridView id="grdProducts" DataSourceID="srcProducts" Runat="server" />
<a href="JavaScript:showInsert();">Insert Product</a>
Insert Product
<asp:DetailsView id="dtlProducts" DataSourceID="srcProducts" AutoGenerateInsertButton="true" AutoGenerateRows="false" DefaultMode="Insert" Runat="server"> <Fields> <asp:BoundField DataField="Title" HeaderText="Title:" /> <asp:BoundField DataField="Director" HeaderText="Director:" /> <asp:CheckBoxField DataField="InStock" HeaderText="In Stock:" /> </Fields> </asp:DetailsView>
<asp:SqlDataSource id="srcProducts" ConnectionString="<%$ ConnectionStrings:Products %>" SelectCommand="SELECT Title,Director,InStock FROM Products" InsertCommand="INSERT Products (Title,Director,InStock) VALUES (@Title,@Director, Runat="server" /> </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>
Link asp:DetaisView with asp:SqlDataSource
<source lang="csharp">
<%@ Page Language="VB" AutoEventWireup="false" %> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">
<title>Untitled Page</title>
</head> <body>
<form id="form1" runat="server">
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="YourConnectionString" SelectCommand="SELECT * FROM [Books]"></asp:SqlDataSource>
<asp:DetailsView ID="DetailsView1" runat="server" AllowPaging="True" AutoGenerateRows="False" BackColor="LightGoldenrodYellow" BorderColor="Tan" BorderWidth="1px" CellPadding="2" DataKeyNames= "BookID" DataSourceID="SqlDataSource1" ForeColor="Black" GridLines="None" Height="50px" Width="125px"> <PagerSettings Mode="NextPrevious" NextPageText="Next >" PreviousPageText="< Previous" /> <FooterStyle BackColor="Tan" /> <EditRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" /> <PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue" HorizontalAlign="Center" /> <Fields> <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" /> <asp:BoundField DataField="Author" HeaderText="Author" SortExpression="Author" /> <asp:BoundField DataField="PageCount" HeaderText="Pages" SortExpression="PageCount" /> <asp:BoundField DataField="YearPublished" HeaderText="Published" SortExpression="YearPublished" /> <asp:BoundField DataField="Price" DataFormatString="{0:c}" HeaderText="Price" HtmlEncode="False" SortExpression="Price" /> <asp:BoundField DataField="LastReadOn" DataFormatString="{0:d}" HeaderText="Last Read" HtmlEncode="False" SortExpression="LastReadOn" /> </Fields> <HeaderStyle BackColor="Tan" Font-Bold="True" /> <AlternatingRowStyle BackColor="PaleGoldenrod" /> </asp:DetailsView>
</form>
</body> </html>
File: Web.config <?xml version="1.0"?> <configuration>
<connectionStrings> <add name="ConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\MyFirstDatabase.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" /> </connectionStrings>
</configuration></source>
Paging Through Data with the DetailsView Control
<source lang="csharp">
<%@ 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>Show Paging</title>
</head> <body>
<form id="form1" runat="server">
<asp:DetailsView id="dtlProducts" DataSourceID="srcProducts" AllowPaging="true" Runat="server" /> <asp:SqlDataSource id="srcProducts" ConnectionString="<%$ ConnectionStrings:Products %>" SelectCommand="SELECT Id,Title,Director,InStock FROM Products" Runat="server" />
</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>
Using BoundFields with the DetailsView control.
<source lang="csharp">
<%@ 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>Show Fields</title>
</head> <body>
<form id="form1" runat="server">
<asp:DetailsView id="dtlProducts" DataSourceID="srcProducts" AutoGenerateRows="false" Runat="server"> <Fields> <asp:BoundField DataField="Title" HeaderText="Product Title:" /> <asp:BoundField DataField="Director" HeaderText="Product Director:" /> <asp:BoundField DataField="Totals" DataFormatString="{0:c}" HeaderText="Box Office Totals:" /> </Fields> </asp:DetailsView> <asp:SqlDataSource id="srcProducts" ConnectionString="<%$ ConnectionStrings:Products %>" SelectCommand="SELECT Id,Title,Director,Totals FROM Products WHERE Id=1" Runat="server" />
</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>
Using DetailsView
<source lang="csharp">
<%@ Page Language="C#" AutoEventWireup="true"%> <!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 runat="server">
<title>Untitled Page</title>
</head> <body>
<form id="form1" runat="server">
<asp:SqlDataSource ID="sourceEmployees" runat="server" ConnectionString="<%$ ConnectionStrings:Northwind %>" ProviderName="System.Data.SqlClient" SelectCommand="SELECT * FROM Employees"/> <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" BorderStyle="Double" CellPadding="4" DataKeyNames="EmployeeID" DataSourceID="sourceEmployees" Font-Names="Verdana" Font-Size="Small" ForeColor="#333333" GridLines="None" Height="50px" Width="509px" AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" AutoGenerateInsertButton="True" AllowPaging="True"> <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> <CommandRowStyle BackColor="#FFFFC0" Font-Bold="True" /> <RowStyle BackColor="#FFFBD6" ForeColor="#333333" /> <FieldHeaderStyle BackColor="#FFFF99" Font-Bold="True" /> <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" /> <Fields> <asp:BoundField DataField="EmployeeID" HeaderText="EmployeeID" InsertVisible="False" ReadOnly="True" SortExpression="EmployeeID"/> <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" /> <asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" /> <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" /> <asp:BoundField DataField="TitleOfCourtesy" HeaderText="TitleOfCourtesy" SortExpression="TitleOfCourtesy" /> <asp:BoundField DataField="Address" HeaderText="Address" SortExpression="Address" /> <asp:BoundField DataField="City" HeaderText="City" SortExpression="City" /> <asp:BoundField DataField="Region" HeaderText="Region" SortExpression="Region" /> <asp:BoundField DataField="PostalCode" HeaderText="PostalCode" SortExpression="PostalCode" /> <asp:BoundField DataField="Country" HeaderText="Country" SortExpression="Country" /> </Fields> <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> <AlternatingRowStyle BackColor="White" /> </asp:DetailsView>
</form>
</body> </html> File: Web.config
<?xml version="1.0"?> <configuration xmlns="http://schemas.microsoft.ru/.NetConfiguration/v2.0">
<appSettings/> <connectionStrings> <add name="Northwind" connectionString="Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI"/> </connectionStrings>
</configuration></source>