ASP.NET Tutorial/Data Binding/Parameters — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
(нет различий)
|
Текущая версия на 14:58, 26 мая 2010
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>