ASP.NET Tutorial/Data Binding/Parameters

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

Collection with ObjectDataSource

   <source lang="csharp">

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="ObjectDataSource" %> <!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 runat="server">

   <title>ObjectDataSource</title>

</head> <body>

   <form id="form1" runat="server">
       <asp:ObjectDataSource ID="ObjectDataSource1" 
                             runat="server" 
                             DataObjectTypeName="Customer" 
                             DeleteMethod="Delete" 
                             InsertMethod="Add" 
                             SelectMethod="GetCustomers" 
                             TypeName="CustomerData" 
                             UpdateMethod="Update" 
                             SelectCountMethod="Count">
           <UpdateParameters>
               <asp:Parameter Name="customerID" Type="Int32" />
               <asp:Parameter Name="firstName" Type="String" />
               <asp:Parameter Name="lastName" Type="String" />
               <asp:Parameter Name="address" Type="String" />
               <asp:Parameter Name="city" Type="String" />
               <asp:Parameter Name="state" Type="String" />
           </UpdateParameters>
       </asp:ObjectDataSource>
        
       <asp:GridView ID="GridView1" 
                     runat="server" 
                     AutoGenerateColumns="False"
                     DataSourceID="ObjectDataSource1" 
                     CellPadding="4" 
                     ForeColor="#333333" 
                     GridLines="None">
           <Columns>
               <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
               <asp:BoundField DataField="CustomerID" HeaderText="CustomerID" SortExpression="CustomerID" />
               <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" />
               <asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" />
               <asp:BoundField DataField="Address" HeaderText="Address" SortExpression="Address" />
               <asp:BoundField DataField="City" HeaderText="City" SortExpression="City" />
               <asp:BoundField DataField="State" HeaderText="State" SortExpression="State" />
           </Columns>
           <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
           <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
           <EditRowStyle BackColor="#999999" />
           <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
           <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
           <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
           <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
       </asp:GridView>
   </form>

</body> </html> File: Default.aspx.cs using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Collections.Generic; [Serializable] public class Customer {

   private int customerID;
   public int CustomerID
   {
       get { return customerID; }
       set { customerID = value; }
   }
   private string firstName;
   public string FirstName
   {
       get { return firstName; }
       set { firstName = value; }
   }
   private string lastName;
   public string LastName
   {
       get { return lastName; }
       set { lastName = value; }
   }
   private string address;
   public string Address
   {
       get { return address; }
       set { address = value; }
   }
   private string city;
   public string City
   {
       get { return city; }
       set { city = value; }
   }
   private string state;
   public string State
   {
       get { return state; }
       set { state = value; }
   }
   public Customer()
   {
   }
 public Customer(int customerID, 
       string firstName, 
       string lastName, 
       string address, 
       string city, 
       string state)
 {
       this.CustomerID = customerID;
       this.FirstName = firstName;
       this.LastName = lastName;
       this.Address = address;
       this.City = city;
       this.State = state;
   }

} public class CustomerData {

   public CustomerData()
   {
       if (Customers.Rows.Count == 0)
       {
           FetchCustomers();
       }
   }
   public void Update(int customerID,
       string firstName,
       string lastName,
       string address,
       string city,
       string state)
   {
       Customer c = Get(customerID);
       c.CustomerID = customerID;
       c.FirstName = firstName;
       c.LastName = lastName;
       c.Address = address;
       c.City = city;
       c.State = state;
   }
   public IEnumerable<Customer> GetCustomers()
   {
       foreach (DataRow row in Customers.Rows)
           yield return CustomerFromRow(row);
   }
   public List<Customer> GetCustomers(int rows, int startIndex)
   {
       if (rows == 0) rows = Customers.Rows.Count;
       List<Customer> pageCustomers = new List<Customer>();
       for (int i = startIndex; i <= rows && i <= Customers.Rows.Count - 1; i++)
           pageCustomers.Add(CustomerFromRow(Customers.Rows[i]));
       return pageCustomers;
   }
   public Customer Get(int id)
   {
       return FetchCustomerById(id);
   }
   public void Add(Customer c)
   {
       Customers.Rows.Add(
           c.CustomerID,
           c.FirstName,
           c.LastName,
           c.Address,
           c.City,
           c.State
           );
   }
   public void Delete(int id)
   {
       DataRow[] rows = Customers.Select("CustomerID = " + id);
       if (rows.Length == 1)
           Customers.Rows.Remove(rows[0]);
   }
   public void Delete(Customer c)
   {
       Delete(c.CustomerID);
   }
   public int Count()
   {
       return Customers.Rows.Count;
   }
   private void FetchCustomers()
   {
       string[] First = new string[] {"A", "B", "C", "D", "E" };
       string[] Last = new string[] { "F", "G", "H", "I", "J" };
       Random rng = new Random(Guid.NewGuid().GetHashCode());
       for (int i = 1; i < 50; i++)
           this.Add(
               new Customer(
               i, First[rng.Next(5)],
               Last[rng.Next(5)],
               rng.Next(1000) + " St.",
               "Dallas",
               "TX"));
   }
   private Customer FetchCustomerById(int id)
   {
       DataRow[] rows = Customers.Select("CustomerID = " + id);
       if (rows.Length == 1)
       {
           return CustomerFromRow(rows[0]);
       }
       return null;
   }
   private Customer CustomerFromRow(DataRow row)
   {
       Customer c = new Customer(
           int.Parse(row["CustomerID"].ToString()),
           row["FirstName"].ToString(),
           row["LastName"].ToString(),
           row["Address"].ToString(),
           row["City"].ToString(),
           row["State"].ToString()
           );
       return c;
   }
   private DataTable Customers
   {
       get
       {
           System.Web.HttpContext context = System.Web.HttpContext.Current;
           DataTable dt = context.Session["CustomerData"] as DataTable;
           if (context.Session["CustomerData"] as DataTable == null)
           {
               context.Session["CustomerData"] = CreateCustomerTable();
           }
           return context.Session["CustomerData"] as DataTable;
       }
       set
       {
           System.Web.HttpContext.
               Current.Session["CustomerData"] = value;
       }
   }
   private DataTable CreateCustomerTable()
   {
       DataTable dt = new DataTable("Customers");
       dt.Columns.Add("CustomerID", typeof(Int32));
       dt.Columns.Add("FirstName", typeof(string));
       dt.Columns.Add("LastName", typeof(string));
       dt.Columns.Add("Address", typeof(string));
       dt.Columns.Add("City", typeof(string));
       dt.Columns.Add("State", typeof(string));
       return dt;
   }

} public partial class ObjectDataSource : System.Web.UI.Page {

   protected void Page_Load(object sender, EventArgs e)
   {
   }

}</source>


Using ASP.NET Parameters with DataSource Controls

   <source lang="csharp">

The SqlDataSource, AccessDataSource, LinqDataSource, and ObjectDataSource controls all support the following types of Parameter objects:

Parameter: Represents an arbitrary static value. ControlParameter: Represents the value of a control or page property. CookieParameter: Represents the value of a browser cookie. FormParameter: Represents the value of an HTML form field. ProfileParameter: Represents the value of a Profile property. QueryStringParameter: Represents the value of a query string field. SessionParameter: Represents the value of an item stored in Session state. <%@ 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 Control Parameter</title>

</head> <body>

   <form id="form1" runat="server">
   <asp:DropDownList
       id="ddlProductCategory"
       DataSourceID="srcProductCategories"
       DataTextField="Name"
       DataValueField="Id"
       Runat="server" />
   <asp:Button
       id="btnSelect"
       Text="Select"
       ToolTip="Select Product"
       Runat="server" />

   <asp:GridView
       id="grdProducts"
       DataSourceID="srcProducts"
       Runat="server" />
   <asp:SqlDataSource
       id="srcProductCategories"
       ConnectionString="Server=.\SQLExpress;
       Trusted_Connection=True;AttachDbFileName=|DataDirectory|MyDatabase.mdf;
       User Instance=True"
       SelectCommand="SELECT Id,Name FROM ProductCategories"
       Runat="server" />
   <asp:SqlDataSource
       id="srcProducts"
       ConnectionString="Data Source=.\SQLExpress;
           AttachDbFilename=|DataDirectory|MyDatabase.mdf;
           Integrated Security=True;User Instance=True"
       SelectCommand="SELECT Title,Director FROM Products
           WHERE CategoryId=@Id"
       Runat="server">
       <SelectParameters>
           <asp:ControlParameter
               Name="Id"
               Type="int32"
               ControlID="ddlProductCategory" />
       </SelectParameters>
   </asp:SqlDataSource>
   </form>

</body> </html></source>