ASP.Net/ADO.net Database/DetailsView

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

Adding an AutoGenerateInsertButton attribute to the DetailsView

   <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" 
                     AllowPaging="True"
                     BorderColor="#DEBA84" 
                     BorderStyle="None" 
                     BorderWidth="1px" 
                     BackColor="#DEBA84" 
                     CellSpacing="2" 
                     CellPadding="3" 
                     DataKeyNames="CustomerID" 
                     AutoGenerateSelectButton="True" 
                     AutoGenerateColumns="False" 
                     PageSize="5">
            <FooterStyle ForeColor="#8C4510" BackColor="#F7DFB5"></FooterStyle>
            <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center"></PagerStyle>
            <HeaderStyle ForeColor="White" BackColor="#A55129" Font-Bold="True"></HeaderStyle>
            <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>
           <SelectedRowStyle ForeColor="White" 
                             BackColor="#738A9C" 
                             Font-Bold="True"></SelectedRowStyle>
           <RowStyle ForeColor="#8C4510" BackColor="#FFF7E7"></RowStyle>
       </asp:GridView>

Customer Details:

       <asp:DetailsView ID="DetailsView1" 
                        runat="server" 
                        DataSourceId="SqlDataSource2"
                        BorderColor="#DEBA84" 
                        BorderStyle="None" 
                        BorderWidth="1px"
                        BackColor="#DEBA84" 
                        CellSpacing="2" 
                        CellPadding="3" 
                        AutoGenerateRows="False" 
                        AutoGenerateInsertButton="true"
                        DataKeyNames="CustomerID">
            <FooterStyle ForeColor="#8C4510" BackColor="#F7DFB5"></FooterStyle>
            <RowStyle ForeColor="#8C4510" BackColor="#FFF7E7"></RowStyle>
            <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center"></PagerStyle>
            <Fields>
               <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>
           </Fields>
           <HeaderStyle ForeColor="White" BackColor="#A55129" 
               Font-Bold="True"></HeaderStyle>
           <EditRowStyle ForeColor="White" BackColor="#738A9C" 
               Font-Bold="True"></EditRowStyle>
       </asp:DetailsView>
       <asp:SqlDataSource ID="SqlDataSource1" runat="server"
            SelectCommand="SELECT * FROM [Customers]" 
            ConnectionString="<%$ ConnectionStrings:AppConnectionString1 %>" />
       <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
            SelectCommand="SELECT * FROM [Customers]"
            FilterExpression="CustomerID="{0}"" 
            ConnectionString="<%$ ConnectionStrings:AppConnectionString1 %>">
            <FilterParameters>
                <asp:ControlParameter Name="CustomerID" ControlId="GridView1"
                     PropertyName="SelectedValue"></asp:ControlParameter>
            </FilterParameters>
       </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>
   
  


Customizing the display of the DetailsView control

   <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:DetailsView ID="DetailsView1" Runat="server" DataSourceID="SqlDataSource1"
            AutoGenerateRows="False" DataKeyNames="CustomerID">
            <Fields>
                 <asp:BoundField ReadOnly="True" HeaderText="CustomerID"
                      DataField="CustomerID" SortExpression="CustomerID"
                      Visible="False" />
                 <asp:BoundField ReadOnly="True" HeaderText="CompanyName"
                      DataField="CompanyName" SortExpression="CompanyName" />
                 <asp:BoundField HeaderText="ContactName" DataField="ContactName"
                      SortExpression="ContactName" />
                 <asp:BoundField HeaderText="ContactTitle" DataField="ContactTitle"
                      SortExpression="ContactTitle" />
             </Fields>
       </asp:DetailsView>
       <asp:SqlDataSource ID="SqlDataSource1" Runat="server" 
           SelectCommand="SELECT * FROM [Customers]"
           ConnectionString="<%$ ConnectionStrings:AppConnectionString1 %>">
       </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>
   
  


Deleting 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 Delete</title>

</head> <body>

   <form id="form1" runat="server">
   <asp:DetailsView
       id="dtlProducts"
       AllowPaging="true"
       DataSourceID="srcProducts"
       DataKeyNames="Id"
       AutoGenerateInsertButton="true"
       AutoGenerateDeleteButton="true"
       AutoGenerateRows="false"
       Runat="server">
       <Fields>
       <asp:BoundField
           DataField="Id"
           HeaderText="ID:"
           InsertVisible="false" />
       <asp:BoundField
           DataField="Title"
           HeaderText="Title:" />
       <asp:BoundField
           DataField="Director"
           HeaderText="Director:" />
       <asp:CheckBoxField
           DataField="InStocks"
           HeaderText="In Stocks:" />
       </Fields>
   </asp:DetailsView>
   <asp:SqlDataSource
       id="srcProducts"
       ConnectionString="<%$ ConnectionStrings:Products %>"
       SelectCommand="SELECT Id,Title,Director,InStocks FROM Products"
       InsertCommand="INSERT Products (Title,Director,InStocks) VALUES (@Title,@Director,
       DeleteCommand="DELETE Products WHERE id=@Id"
       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 a Master/Detail form 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"> <script runat="server">

   void Page_Load()
   {
       if (!Page.IsPostBack)
           grdProducts.SelectedIndex = 0;
   }
   protected void dtlProducts_ItemUpdated(object sender, DetailsViewUpdatedEventArgs e)
   {
       grdProducts.DataBind();
   }

</script> <html xmlns="http://www.w3.org/1999/xhtml" > <body>

   <form id="form1" runat="server">
   <asp:GridView
       id="grdProducts"
       DataSourceID="srcProducts"
       DataKeyNames="Id"
       AutoGenerateSelectButton="true"
       Runat="server" />
   <asp:DetailsView
       id="dtlProducts"
       DefaultMode="Edit"
       AutoGenerateEditButton="true"
       AllowPaging="true"
       DataSourceID="srcProductDetails"
       DataKeyNames="Id"
       Runat="server" OnItemUpdated="dtlProducts_ItemUpdated" />
   <asp:SqlDataSource
       id="srcProducts"
       ConnectionString="<%$ ConnectionStrings:Products %>"
       SelectCommand="SELECT Id,Title FROM Products"
       Runat="server" />
   <asp:SqlDataSource
       id="srcProductDetails"
       ConnectionString="<%$ ConnectionStrings:Products %>"
       SelectCommand="SELECT Id,Title,Director,InStocks FROM Products WHERE Id=@ProductId"
       UpdateCommand="UPDATE Products SET Title=@Title,Director=@Director, InStocks=@InStocks WHERE Id=@Id"
       Runat="server">
       <SelectParameters>
           <asp:ControlParameter Name="ProductId" ControlID="grdProducts" />
       </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>
   
  


Editing 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">

   <title>Show Update</title>

</head> <body>

   <form id="form1" runat="server">
   <asp:DetailsView
       id="dtlProducts"
       DataKeyNames="Id"
       AutoGenerateEditButton="true"
       AllowPaging="true"
       DataSourceID="srcProducts"
       Runat="server" />
   <asp:SqlDataSource
       id="srcProducts"
       ConnectionString="<%$ ConnectionStrings:Products %>"
       SelectCommand="SELECT Id,Title,Director,InStocks FROM Products"
       UpdateCommand="UPDATE Products SET Title=@Title,Director=@Director,InStocks=@InStocks WHERE Id=@Id"
       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>
   
  


Enabling paging on the DetailsView control

   <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:DetailsView ID="DetailsView1" Runat="server" DataSourceID="SqlDataSource1"
        AutoGenerateRows="True" AllowPaging=True DataKeyNames="CustomerID"></asp:DetailsView>
   <asp:SqlDataSource ID="SqlDataSource1" Runat="server" 
       SelectCommand="SELECT * FROM [Customers]"
       ConnectionString="<%$ ConnectionStrings:AppConnectionString1 %>">
   </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>
   
  


Handling Concurrency Issues: CompareAllValues or OverwriteChanges

   <source lang="csharp">

<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <script runat="server">

   protected void srcProducts_Updated(object sender, SqlDataSourceStatusEventArgs e)
   {
       if (e.AffectedRows == 0)
           lblMessage.Text = "Could not update record";
   }

</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">

   <title>Concurrency</title>

</head> <body>

   <form id="form1" runat="server">
   <asp:Label ID="lblMessage" EnableViewState="false" runat="server" />
   <asp:DetailsView
       id="dtlProducts"
       DataKeyNames="Id"
       AutoGenerateEditButton="true"
       AllowPaging="true"
       DataSourceID="srcProducts"
       Runat="server" />
   <asp:SqlDataSource
       id="srcProducts"
       ConnectionString="<%$ ConnectionStrings:Products %>"
       SelectCommand="SELECT Id,Title,Director,InStocks FROM Products"
       UpdateCommand="UPDATE Products
           SET Title=@Title,Director=@Director,InStocks=
           WHERE Title=@original_Title
           AND Director=@original_Director
           AND InStocks=@InStocks
           AND Id=@original_Id"
       ConflictDetection="CompareAllValues"
       OldValuesParameterFormatString="original_{0}"
       Runat="server" OnUpdated="srcProducts_Updated" />
   </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 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 Insert</title>

</head> <body>

   <form id="form1" runat="server">
   <asp:DetailsView
       id="dtlProducts"
       AllowPaging="true"
       DataSourceID="srcProducts"
       AutoGenerateInsertButton="true"
       Runat="server" />
   <asp:SqlDataSource
       id="srcProducts"
       ConnectionString="<%$ ConnectionStrings:Products %>"
       SelectCommand="SELECT Title,Director,InStocks FROM Products"
       InsertCommand="INSERT Products (Title,Director,InStocks)
           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 DetailsView with SqlDataSource and do the editing

   <source lang="csharp">

<%@ Page Language="C#"%> <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="sourceProducts" 
                          runat="server"
                          ProviderName="System.Data.SqlClient"
                          ConnectionString="<%$ ConnectionStrings:Northwind %>"
                          SelectCommand="SELECT ProductID, ProductName, UnitPrice, UnitsInStock, UnitsOnOrder, ReorderLevel, Discontinued FROM Products"
                          UpdateCommand="UPDATE Products SET ProductName=@ProductName, UnitPrice=CONVERT(money, @UnitPrice), UnitsInStock=@UnitsInStock, UnitsOnOrder=@UnitsOnOrder, ReorderLevel=@ReorderLevel, Discontinued=@Discontinued WHERE ProductID=@ProductID"
                          DeleteCommand="DELETE Products WHERE ProductID=@ProductID"
                          InsertCommand="INSERT INTO Products (ProductName, UnitPrice, UnitsInStock, UnitsOnOrder, ReorderLevel, Discontinued) VALUES (@ProductName, CONVERT(money, @UnitPrice), @UnitsInStock, @UnitsOnOrder, @ReorderLevel, @Discontinued)">  
       </asp:SqlDataSource>
       <asp:DetailsView ID="DetailsView1" 
                        runat="server" 
                        Height="50px" 
                        Width="125px"  
                        DataKeyNames="ProductID"
                        AllowPaging="True" 
                        DataSourceID="sourceProducts"
                        AutoGenerateInsertButton="true" 
                        AutoGenerateDeleteButton="true" 
                        AutoGenerateEditButton="true">
           <PagerSettings PageButtonCount="25" />            
       </asp:DetailsView>
       
   </form>

</body> </html>

File: Web.config

<?xml version="1.0"?> <configuration>

 <connectionStrings>
   <add name="Northwind" connectionString="Data Source=localhost\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=SSPI"/>
 </connectionStrings>

</configuration>

</source>
   
  


Use the ItemInserted event to handle any errors

   <source lang="csharp">

<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <script runat="server">

   protected void dtlProducts_ItemInserted(object sender, DetailsViewInsertedEventArgs e)
   {
       if (e.Exception != null)
       {
           e.ExceptionHandled = true;
           e.KeepInInsertMode = true;
           lblError.Visible = true;
       }
   }

</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">

   <title>Insert Errors</title>

</head> <body>

   <form id="form1" runat="server">
   <asp:Label
       id="lblError"
       Text="Could not insert record"
       Visible="false"
       EnableViewState="false"
       CssClass="error"
       Runat="server" />
   <asp:DetailsView
       id="dtlProducts"
       AllowPaging="true"
       DataSourceID="srcProducts"
       AutoGenerateInsertButton="true"
       OnItemInserted="dtlProducts_ItemInserted"
       Runat="server" />
   <asp:SqlDataSource
       id="srcProducts"
       ConnectionString="<%$ ConnectionStrings:Products %>"
       SelectCommand="SELECT Title,Director,InStocks FROM Products"
       InsertCommand="INSERT Products (Title,Director,InStocks)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>
   
  


Using a PagerTemplate to customize 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"> <script runat="server">

   protected void dtlProducts_DataBound(object sender, EventArgs e)
   {
       DropDownList ddlPager = (DropDownList)dtlProducts.BottomPagerRow.Cells[0]. FindControl("ddlPager");        for (int i = 0; i < dtlProducts.PageCount; i++)
       {
           ListItem item = new ListItem( String.Format("Record {0}",i+1), i.ToString());
           if (dtlProducts.PageIndex == i)
               item.Selected = true;
           ddlPager.Items.Add(item);
       }
   }
   protected void btnPage_Click(object sender, EventArgs e)
   {
       DropDownList ddlPager = (DropDownList)dtlProducts.BottomPagerRow.Cells[0]. FindControl("ddlPager");
       dtlProducts.PageIndex = Int32.Parse(ddlPager.SelectedValue);
   }

</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">

   <title>Show Pager Template</title>

</head> <body>

   <form id="form1" runat="server">
       <asp:DetailsView
           id="dtlProducts"
           DataSourceID="srcProducts"
           AllowPaging="true"
           OnDataBound="dtlProducts_DataBound"
           Runat="server">
           <PagerTemplate>
               <asp:DropDownList
                   id="ddlPager"
                   Runat="server" />
               <asp:Button
                   id="btnPage"
                   Text="Select"
                   Runat="server" OnClick="btnPage_Click" />
           </PagerTemplate>
       </asp:DetailsView>
   
       <asp:SqlDataSource
           id="srcProducts"
           ConnectionString="<%$ ConnectionStrings:Products %>"
           SelectCommand="SELECT Id,Title,Director,InStocks 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 a template when editing 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>Template Edit</title>

</head> <body>

   <form id="form1" runat="server">
   <asp:DetailsView
       id="dtlProducts"
       AutoGenerateRows="false"
       AutoGenerateEditButton="true"
       AllowPaging="true"
       DefaultMode="Edit"
       DataSourceID="srcProducts"
       DataKeyNames="Id"
       Runat="server">
       <Fields>
   <asp:TemplateField HeaderText="Title:">
   <EditItemTemplate>
   <asp:TextBox
       id="txtTitle"
       Text="<%# Bind("Title") %>"
       runat="server" />
   <asp:RequiredFieldValidator
       id="reqTitle"
       ControlToValidate="txtTitle"
       Text="(required)"
       Display="Dynamic"
       Runat="server" />
   </EditItemTemplate>
   </asp:TemplateField>
   <asp:TemplateField HeaderText="Box Office Totals:">
   <EditItemTemplate>
   <asp:TextBox
       id="txtTotals"
       Text="<%# Bind("Totals", "{0:f}") %>"
       runat="server" />
   <asp:RequiredFieldValidator
       id="reqTotals"
       ControlToValidate="txtTotals"
       Text="(required)"
       Display="Dynamic"
       Runat="server" />
   <asp:CompareValidator
       id="cmpTotals"
       ControlToValidate="txtTotals"
       Text="(invalid)"
       Display="Dynamic"
       Operator="DataTypeCheck"
       Type="currency"
       Runat="server" />
   </EditItemTemplate>
   </asp:TemplateField>
   </Fields>

</asp:DetailsView> <asp:SqlDataSource

   id="srcProducts"
   ConnectionString="<%$ ConnectionStrings:Products %>"
   SelectCommand="SELECT Id,Title,Totals FROM Products"
   UpdateCommand="UPDATE Products SET Title=@Title, Totals=@Totals WHERE Id=@Id"
   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 the GridView and DetailsView together

   <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" 
                     AllowPaging="True"
                     BorderColor="#DEBA84" 
                     BorderStyle="None" 
                     BorderWidth="1px" 
                     BackColor="#DEBA84" 
                     CellSpacing="2" 
                     CellPadding="3" 
                     DataKeyNames="CustomerID" 
                     AutoGenerateSelectButton="True" 
                     AutoGenerateColumns="False" 
                     PageSize="5">
            <FooterStyle ForeColor="#8C4510"
                         BackColor="#F7DFB5"></FooterStyle>
            <PagerStyle ForeColor="#8C4510" 
                        HorizontalAlign="Center"></PagerStyle>
            <HeaderStyle ForeColor="White" 
                         BackColor="#A55129" 
                         Font-Bold="True"></HeaderStyle>
            <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>
           <SelectedRowStyle ForeColor="White" 
                             BackColor="#738A9C" 
                             Font-Bold="True"></SelectedRowStyle>
           <RowStyle ForeColor="#8C4510" BackColor="#FFF7E7"></RowStyle>
       </asp:GridView>

Customer Details:

       <asp:DetailsView ID="DetailsView1" 
                        runat="server" 
                        DataSourceId="SqlDataSource2"
                        BorderColor="#DEBA84" 
                        BorderStyle="None" 
                        BorderWidth="1px"
                        BackColor="#DEBA84" 
                        CellSpacing="2" 
                        CellPadding="3" 
                        AutoGenerateRows="False" 
                        DataKeyNames="CustomerID">
            <FooterStyle ForeColor="#8C4510" BackColor="#F7DFB5"></FooterStyle>
            <RowStyle ForeColor="#8C4510" BackColor="#FFF7E7"></RowStyle>
            <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center"></PagerStyle>
            <Fields>
               <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>
           </Fields>
           <HeaderStyle ForeColor="White" BackColor="#A55129" 
               Font-Bold="True"></HeaderStyle>
           <EditRowStyle ForeColor="White" BackColor="#738A9C" 
               Font-Bold="True"></EditRowStyle>
       </asp:DetailsView>
       <asp:SqlDataSource ID="SqlDataSource1" runat="server"
            SelectCommand="SELECT * FROM [Customers]" 
            ConnectionString="<%$ ConnectionStrings:AppConnectionString1 %>" />
       <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
            SelectCommand="SELECT * FROM [Customers]"
            FilterExpression="CustomerID="{0}"" 
            ConnectionString="<%$ ConnectionStrings:AppConnectionString1 %>">
            <FilterParameters>
                <asp:ControlParameter Name="CustomerID" ControlId="GridView1"
                     PropertyName="SelectedValue"></asp:ControlParameter>
            </FilterParameters>
       </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>