初学ASP.NET 数据 4种单值绑定方式

看了微软MVP朱晔出的ASP.NET第一步,大致了解了单值绑定的分类和用法。

表达式主要分为4种

  1. <%= XXX %>     内联引用方式本 可以引用C#代码
  2. <%# XXX %>     可以引用.CS代码中的字段 前提在初始化相应字段后,在Page_Load页面上使用Page.DataBind()
  3. <%#$ XXX %>  可以引用webConfig.xml中预定义的字段或者已注册的类的表达式
  4. <%#Eval(XXX) %> 类似于JAVASCRIPT方式 数据源也需要绑定,以下是DEMO

首先给出aspx代码:

Code
 1<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="webTest._Default" %>
 2
 3<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4
 5<html xmlns="http://www.w3.org/1999/xhtml" >
 6<head runat="server">
 7    <title>Untitled Page</title>
 8</head>
 9<body>
10    <form id="form1" runat="server">
11    <div>
12    <%# aaa + "1" %>
13    <br />
14    <%= DateTime.Now %>
15    </div>
16    <asp:TextBox ID="box_a" runat="server" Text="<%$ Code: DateTime.Now %>" />
17    <br />    
18    <div>
19    </div>
20    <asp:TextBox ID="bindTest" runat="server" Text="<%$ AppSettings:test %>"/>
21    <br />
22    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
23    <Columns>
24        <asp:TemplateField>
25        <HeaderTemplate >
26        自定义的姓名列 
27    </HeaderTemplate>
28        <ItemTemplate>
29        <asp:TextBox ID="txbName" runat="server" Text='<%#Eval("Name") %>'></asp:TextBox>
30        <br />        
31        </ItemTemplate>
32        </asp:TemplateField>
33         <asp:TemplateField>
34        <HeaderTemplate >
35                <asp:Label ID="lblSex" runat="server" Text=" 自定义的性别列" ></asp:Label>
36        </HeaderTemplate>
37        <ItemTemplate>
38        <%#Eval("Sex") %>
39        </ItemTemplate>
40        </asp:TemplateField>
41        </Columns>
42        </asp:GridView>    
43    </form>
44</body>
45</html>
46

 

以下是.cs代码

Code
 1using System;
 2using System.Collections;
 3using System.Configuration;
 4using System.Data;
 5using System.Linq;
 6using System.Web;
 7using System.Web.Security;
 8using System.Web.UI;
 9using System.Web.UI.HtmlControls;
10using System.Web.UI.WebControls;
11using System.Web.UI.WebControls.WebParts;
12using System.Xml.Linq;
13
14namespace webTest
15{
16    public partial class _Default : System.Web.UI.Page
17    {
18        //用于显示的字段
19        public string aaa = "后台的变量";
20        protected void Page_Load(object sender, EventArgs e)
21        {
22            ini_table();
23            Page.DataBind();
24        }

25
26        void ini_table()
27        {
28            DataTable dt = new DataTable();
29            //用于显示的Name列
30            dt.Columns.Add("Name");
31            dt.Columns.Add("sex");
32            DataRow dr = dt.NewRow();
33            dr[0= "aaa";
34            dr[1= "";
35            dt.Rows.Add(dr);
36
37            dr = dt.NewRow();
38            dr[0= "bbb";
39            dr[1= "";
40            dt.Rows.Add(dr);
41
42            dr = dt.NewRow();
43            dr[0= "ccc";
44            dr[1= "";
45            dt.Rows.Add(dr);
46
47            //数据源绑定
48            this.GridView1.DataSource = dt.DefaultView;
49            this.GridView1.DataBind();
50        }
        
51    }

对web.config的添加:

appSettings中:
< appSettings >
    
< add  key ="Test"  value ="appSettingDemo" />
    
</ appSettings >


expressionBuilders中:
      
< expressionBuilders >
        
< add  expressionPrefix ="Code"  type ="webTest.codeExpressionBulider" />
      
</ expressionBuilders >

 

新建的codeExpressionBulider类

Code
 1using System;
 2using System.Data;
 3using System.Configuration;
 4using System.Linq;
 5using System.Web;
 6using System.Web.Security;
 7using System.Web.UI;
 8using System.Web.Compilation;
 9using System.Web.UI.HtmlControls;
10using System.Web.UI.WebControls;
11using System.Web.UI.WebControls.WebParts;
12using System.Xml.Linq;
13using System.CodeDom;
14
15namespace webTest
16{
17    [ExpressionPrefix("Code")]
18    public class codeExpressionBulider: ExpressionBuilder
19    {
20        public override CodeExpression GetCodeExpression(
21            BoundPropertyEntry entry, object parsedData,
22            ExpressionBuilderContext context)
23        {
24            return new CodeSnippetExpression(entry.Expression);
25        }

26
27    }

28}

 

以上代码在VS2008中通过。

虽然大概了解了下,但是还是不知道这4种方式主要运用的地方和优劣。。。有待在进一步学习中领悟


 

转载于:https://www.cnblogs.com/jimmypony/archive/2008/03/19/1113393.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值