ASP.NET Tutorial/Data Binding/DataBinding Expressions
Содержание
A template can contain other controls
<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 Links</title>
</head> <body>
<form id="form1" runat="server">
<asp:Repeater id="Repeater1" DataSourceId="srcDefaults" Runat="server"> <ItemTemplate> <asp:HyperLink id="HyperLink1" Text="<%# Eval("Title") %>" NavigateUrl="<%# Eval("Id", "Details.aspx?id={0}") %>" runat="server" />
</ItemTemplate> </asp:Repeater>
<asp:SqlDataSource id="srcDefaults" ConnectionString="Data Source=.\SQLExpress; AttachDbFilename=|DataDirectory|MyDatabase.mdf; Integrated Security=True;User Instance=True" SelectCommand="SELECT Id, Title FROM Defaults" Runat="server" />
</form>
</body> </html></source>
Call other methods than the Eval() method in a DataBinding expression
<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">
public string FormatTitle(Object title) { return "" + title.ToString().ToUpper() + ""; }
</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">
<title>Format Default Titles</title>
</head> <body>
<form id="form1" runat="server">
<asp:Repeater id="Repeater1" DataSourceId="srcDefaults" Runat="server"> <ItemTemplate> <%# FormatTitle(Eval("Title")) %>
</ItemTemplate> </asp:Repeater>
<asp:SqlDataSource id="srcDefaults" ConnectionString="Data Source=.\SQLExpress; AttachDbFilename=|DataDirectory|MyDatabase.mdf; Integrated Security=True;User Instance=True" SelectCommand="SELECT Title FROM Defaults" Runat="server" />
</form>
</body> </html></source>
Repeated Value Binding
<source lang="csharp">
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="RepeatedValueBinding" %> <!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">
<select runat="server" ID="Select1" size="3" DataTextField="Key" DataValueField="Value" NAME="Select1" /> |
<select runat="server" ID="Select2" DataTextField="Key" DataValueField="Value" NAME="Select2" /> |
<asp:ListBox runat="server" ID="Listbox1" Size="3" DataTextField="Key" DataValueField="Value" /> |
<asp:DropDownList runat="server" ID="DropdownList1" DataTextField="Key" DataValueField="Value" /> |
<asp:RadioButtonList runat="server" ID="OptionList1" DataTextField="Key" DataValueField="Value" /> |
<asp:CheckBoxList runat="server" ID="CheckList1" DataTextField="Key" DataValueField="Value" /> |
<asp:Button runat="server" Text="Get Selection" ID="cmdGetSelection" OnClick="cmdGetSelection_Click" />
<asp:Literal runat="server" ID="Result" EnableViewState="False" />
</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; public partial class RepeatedValueBinding : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { Hashtable ht = new Hashtable(3); ht.Add("value1", "Key1"); ht.Add("value2", "Key2"); ht.Add("value3", "Key3"); Select1.DataSource = ht; Select2.DataSource = ht; Listbox1.DataSource = ht; DropdownList1.DataSource = ht; CheckList1.DataSource = ht; OptionList1.DataSource = ht; Page.DataBind(); } } protected void cmdGetSelection_Click(object sender, EventArgs e) { if (Select1.SelectedIndex != -1) Result.Text += "- Item selected in Select1: " + Select1.Items[Select1.SelectedIndex].Text + " - " + Select1.Value + "
"; if (Select2.SelectedIndex != -1) Result.Text += "- Item selected in Select2: " + Select2.Items[Select2.SelectedIndex].Text + " - " + Select2.Value + "
"; if (Listbox1.SelectedIndex != -1) Result.Text += "- Item selected in Listbox1: " + Listbox1.SelectedItem.Text + " - " + Listbox1.SelectedItem.Value + "
"; if (DropdownList1.SelectedIndex != -1) Result.Text += "- Item selected in DropdownList1: " + DropdownList1.SelectedItem.Text + " - " + DropdownList1.SelectedItem.Value + "
"; if (OptionList1.SelectedIndex != -1) Result.Text += "- Item selected in OptionList1: " + OptionList1.SelectedItem.Text + " - " + OptionList1.SelectedItem.Value + "
"; if (CheckList1.SelectedIndex != -1) { Result.Text += "- Items selected in CheckList1: "; foreach (ListItem li in CheckList1.Items) { if (li.Selected) Result.Text += li.Text + " - " + li.Value + " "; } } }
}</source>
Single value binding
<source lang="csharp">
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="SingleValueBinding" %> <!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:Image runat="server" ImageUrl="<%# FilePath %>" ID="Image1"/>
<asp:Label runat="server" Text="<%# FilePath %>" ID="Label1"/>
<asp:TextBox runat="server" Text="<%# GetFilePath() %>" ID="Textbox1"/>
<asp:HyperLink runat="server" NavigateUrl="<%# LogoPath.Value %>" Font-Bold="True" Text="Show logo" ID="Hyperlink1"/>
<input type="hidden" runat="server" ID="LogoPath" value="apress.gif" NAME="LogoPath"> <%# FilePath %>
<img src="<%# GetFilePath() %>">
</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; public partial class SingleValueBinding : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) { this.DataBind(); } protected string GetFilePath() { return "http://www.nfex.ru/style/logo.png"; } protected string FilePath { get { return "http://www.nfex.ru/style/logo.png"; } }
}</source>
Understanding Templates and DataBinding Expressions
<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 ItemTemplate</title>
</head> <body>
<form id="form1" runat="server">
<asp:Repeater id="Repeater1" DataSourceId="srcDefaults" Runat="server"> <ItemTemplate> <%#Eval("Title")%> directed by <%#Eval("Director")%>
</ItemTemplate> </asp:Repeater>
<asp:SqlDataSource id="srcDefaults" ConnectionString="Data Source=.\SQLExpress; AttachDbFilename=|DataDirectory|MyDatabase.mdf; Integrated Security=True;User Instance=True" SelectCommand="SELECT Title,Director FROM Defaults" Runat="server" />
</form>
</body> </html></source>