笔记:数据绑定表达式(一)

数据绑定表达式必须包含在<%#和%>字符之间。格式如下:

<tagprefix:tagname property='<%# data-binding expression %>' runat="server" />

 

或者如下:

<%# data-binding expression %>

ASP.NET 支持分层数据绑定模型,数据绑定表达式使用 Eval 和 Bind 方法将数据绑定到控件,并将更改提交回数据库。
Eval 方法是静态单向(只读)方法,所以Eval 函数用于单向(只读)绑定,该方法采用数据字段的值作为参数并将其作为字符串返回。
Bind 方法支持读/写功能,所以Bind 函数用于双向(可更新)绑定。该方法可以检索数据绑定控件的值并将任何更改提交回数据库。
XPath 方法支持对XML类型的数据源提供支持。

数据绑定表达式都可以出现在页面的哪个位置呢?

一,可以将数据绑定表达式包含在服务器控件或者普通的html元素的开始标记中属性名/属性值对的值侧。例如:

<asp:TextBox ID="TextBox1" runat="server" Text='<%#数据绑定表达式%>' ></asp:TextBox><br />

注意条款:此时数据的绑顶表达式可以是一个变量,也可以是一个带返回值的C#或者VB.NET方法,还可以是某个控件的某个属性的值,也可以是C#或者VB.NET对象的某个字段或者属性的值等等。当然也可以直接就是一个字符串,例如"hello"。
如果此时的数据绑定表达式是Eval("数据库中某个表的某个字段")等,那么必须把TextBox1放在某个循环显示的控件的模板中才正确,否则会提示:Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用。其实就是想让你把TextBox1放在像Repeater,DataList,GridView这样的控件的模板中。

二,数据绑定绑定表达式包含在在页面中的任何位置。例如:

<form id="form1" runat="server">
    
<div>
     
<%#Eval("数据绑定表达式1")%>  
     
<%#Eval("数据绑定表达式2")%>
        
    
</div>
 
</form>

同样遵循"一"的注意条款。
如果此时的数据绑定表达式是Eval("数据库中某个表的某个字段")等,那么必须把 <%#Eval("数据绑定表达式1")%>   <%#Eval("数据绑定表达式2")
%>  放在像Repeater,DataList,GridView这样的控件的模板中。

三,可以将数据绑定表达式包含在Javascript代码中,从而实现在Javascript中调用C#或者VB.NET的方法。例如:
Deafult2.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!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>无标题页</title>
    
<script language ="javascript" type="text/javascript">
    
function GetStr()
    
{
       
var
 a; 
       a 
= ''

       a
='<%#CSharpToJavascript()%>'         //调用c#的方法

       alert(a);
    }

    
</script>    
</head>

<body>
    
<form id="form1" runat="server">
    
<div>
        
<input id="Button1" type="button" value="Javascript调用c#的方法!" onclick="GetStr()" /</div> 
    
</form>

</body>
</html>

Default2.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
 Default2 : System.Web.UI.Page
{
    
protected void Page_Load(object
 sender, EventArgs e)
    {
        Page.DataBind();
//方法有返回值的要先绑定,才能实现Javascript调用c#的方法!

    }
    
public string
 CSharpToJavascript()
    {
        
return "Javascript调用c#的方法!"
;
    }
}

数据绑定表达式都可以是什么类型呢?
1,可以是一个变量
例如:<asp:Label ID="Label1" runat="server" Text="<%#变量名%>"></asp:Label>
2,可以是服务器控件的属性值
例如: <asp:Label ID="Label1" runat="server" Text="<%#TextBox2.Text %>"></asp:Label>
3,可以是一个数组等集合对象
例如把一个数组绑定到列表控件,例如ListBox等,或者Repeater,DataList,GridView这样的控件等,此时只需要把属性DataSource='<%# 数组名%>' 。
4,可以是一个表达式
例如:Person是一个对象,Name和City是它的2个属性,则数据绑定表达式可以这样写:
<%#(Person.Name + " " + Person.City)%>。
5,可以是一个方法
例如:<%#GetUserName()%>。GetUserName()是一个已经定义的C#方法,一般要求有返回值。
6,可以是用Eval,DateBinder.Eval取得的数据表的字段,这个是最常见的了,不再举例。

注意:如果数据绑定表达式作为属性的值,只要数据绑定表达式中没有出现双引号,那么<%#数据绑定表达式%>的最外层用双引号或者单引号都可以。如果数据绑定表达式中出现双引号,则<%#数据绑定表达式%>的最外层最好要用单引号。

与数据库有关而且绑定到DataView,DataTable,DataSet 等数据源的数据绑定表达式都有那些?

1,<%#DataBinder.Eval(Container.DataItem,"字段名")%>
      <%#DataBinder.Eval(Container.DataItem,"字段名","{0:c}") %>
     还有2种不常用的:
      <%# DataBinder.Eval(Container,"DataItem.字段名")%> 
      <%# DataBinder.Eval(Container,"DataItem.字段名",{0:c})%> 
      Container.DataItem相当于数据库中某个表或者视图中的一行记录,而一行可以有很多列。
      最后一个参数和
String.Format的形式一样。例如c代表货币,p代表百分号,d代表短日期格式显示,f代表浮点数现实,f3代表小数点后三为,一次类推。

        
使用三目运算符?:的例子:
 <%# DataBinder.Eval(Container.DataItem, "字段名").ToString().Trim().Length>16?DataBinder.Eval(Container.DataItem, "字段名").ToString().Trim().Substring(0,16):DataBinder.Eval(Container.DataItem, "字段名"
).ToString().Trim() %>

2,<%#Eval("字段名")%>
     <%#Eval("字段名","{0:c}")%>
     .NET 2.0新出现的一个方法。和DataBinder.Eval()等价。
     最后一个参数和

String.Format的形式一样。例如c代表货币,p代表百分号,d代表短日期格式显示,f代表浮点数现实,f3代表小数点后三位,一次类推。

    
使用三目运算符的例子:
<%#(Eval("性别")).ToString() =="True"?"男":"女"%> 
 性别字段类型为:是/否(Access),bit(sql server)
      使用方法调用的例子:
  <%# GetUserPhoto(Eval("PhotoPath")) %>    
     GetUserPhoto()的定义:
3, <%#((DataRowView)Container.DataItem)["字段名"] %>
      <%# string.Format("{0:c}", ((DataRowView)Container.DataItem)["字段名"])%>
      Container.DataItem相当于数据库中某个表或者视图中的一行记录,而一行可以有很多列。  
      用
String.Format方法设定字段的显示样式。例如c代表货币,p代表百分号,d代表短日期格式显示,f代表浮点数现实,f3代表小数点后三为,一次类推。
       
       类型转换例子:<%# (int)((DataRowView)Container.DataItem)["字段名1"]*(int)((DataRowView)Container.DataItem)["字段名2"]%>    意思是2个字段相乘。
    

上面三种绑定方法的效率:Eval方法执行时候会调用DataBinder.Eval方法,DataBinder.Eval方法在运行时使用反射执行后期绑定计算,会导致性能明显下降。所以会导致性能明显下降。所以三者中<%#((DataRowView)Container.DataItem)["字段名"] %>的性能最好。

转载于:https://www.cnblogs.com/shineqiujuan/archive/2008/09/22/1296005.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496674.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java并发编程实战~Thread-Per-Message模式

我们曾经把并发编程领域的问题总结为三个核心问题&#xff1a;分工、同步和互斥。其中&#xff0c;同步和互斥相关问题更多地源自微观&#xff0c;而分工问题则是源自宏观。我们解决问题&#xff0c;往往都是从宏观入手&#xff0c;在编程领域&#xff0c;软件的设计过程也是先…

水面反光如何拍摄_如何在雨中拍摄,这些技巧会让你的摄影更完美

雨是柔弱的&#xff0c;是世界上最轻灵的东西&#xff0c;敲不响那钢筋水泥造的高楼。而瓦屋则不同&#xff0c;雨滴在上面&#xff0c;叮叮当当的&#xff0c;立即奏出悦耳的声音。身在小屋的人也就有了在雨中亲近自然的福气。而且在雨天睡觉是最舒服的了~在阴雨天气中最熟悉的…

2018全球最强物联网公司榜单揭晓|20家企业物联网战略大起底!

来源&#xff1a; 物联网智库丨公众号IDG旗下杂志《NetWork World》近期公布了全球最强物联网公司名单。本文根据入选评语&#xff0c;对20家企业战略布局进行搜集整理&#xff0c;供业内人士参考&#xff01;根据Gartner预测&#xff0c;到2020年将有超过200亿台联网设备。全球…

MD5算法

文章目录前言一、MD5是什么&#xff1f;二、go语言实现前言 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、MD5是什么&#xff1f; MD5信息摘要算法&#xff08;英语&#xff1a;MD5 Message-Digest Algorithm&#xff09;&#xff0c;一种被广泛…

Python 中 xpath 语法 与 lxml 库解析 HTML/XML 和 CSS Selector

The lxml.etree Tutorial &#xff1a;https://lxml.de/tutorial.html python3 解析 xml&#xff1a;https://www.cnblogs.com/deadwood-2016/p/8116863.html 微软文档&#xff1a; XPath 语法 和 XPath 函数 W3school Xpath 教程&#xff1a;http://www.w3school.com.cn/xp…

Java并发编程实战~生产者-消费者模式

前面我们在《Worker Thread 模式》中讲到&#xff0c;Worker Thread 模式类比的是工厂里车间工人的工作模式。但其实在现实世界&#xff0c;工厂里还有一种流水线的工作模式&#xff0c;类比到编程领域&#xff0c;就是生产者 - 消费者模式。 生产者 - 消费者模式在编程领域的…

4-css图片效果

设置边框border-style:dotted; /* 点画线 */ border-color:#FF9900; /* 边框颜色 */ border-width:5px; /* 边框粗细 */也可以合并书写 border:5px double #FF00FF;width 50% 表示目前此元素宽度相对于父元素宽度为50%float 用于设定图片与文字的混排方式margin用于设置距离…

AI界的七大未解之谜:OpenAI丢出一组AI研究课题

来源&#xff1a;三体智讯今天&#xff0c;OpenAI在官方博客上丢出了7个研究过程中发现的未解决问题。OpenAI希望这些问题能够成为新手入坑AI的一种有趣而有意义的方式&#xff0c;也帮助从业者提升技能。OpenAI版AI界七大未解之谜&#xff0c;现在正式揭晓——丨1. Slitherin难…

vue 前端商城框架_前端工程师要掌握几个Vue框架

vue是一套用于构建用户界面的渐进式JavaScript框架&#xff0c;简单说Vue是类似于view的前端框架。vue开发核心是关注视图层&#xff0c;同时它更加容易与第三方库结合&#xff0c;再者我们在现有的项目中可以直接整合一起。目前vue技术社区在英文或中文都非常丰富&#xff0c;…

sha256算法

文章目录前言一、sha256是什么&#xff1f;二、go语言实现前言 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、sha256是什么&#xff1f; SHA256是SHA-2下细分出的一种算法 SHA-2&#xff0c;名称来自于安全散列算法2&#xff08;英语&#xff…

Python 模块 requests 模拟登录豆瓣 并 发表动态

如何抓取 WEB 页面&#xff1a;http://blog.csdn.net/chenguolinblog/article/details/45024643github 上一个关于模拟登录的项目&#xff1a;https://github.com/xchaoinfo/fuck-login Python爬虫之模拟登录总结&#xff1a;http://blog.csdn.net/churximi/article/details/50…

华为云BU总裁:如何把AI从噱头变为生产力?

来源&#xff1a;亿欧网 作者&#xff1a;张之颖“别跟着喊口号&#xff0c;少看朋友圈。…人工智能在中国被过分炒作了&#xff0c;现在国内人工智能已被娱乐化。不是做两个刷脸应用、搞一个APP就叫做人工智能。”华为云BU总裁郑叶来接受环球网记者的采访时表示&#xff0c;华…

DSA签名算法

文章目录前言一、DSA是什么&#xff1f;二、go语言实现前言 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、DSA是什么&#xff1f; DSA&#xff08;Digital Signature Algorithm&#xff0c;数字签名算法&#xff0c;用作数字签名标准的一部分&a…

Java并发编程实战~Actor 模型

Hello Actor 模型 Actor 模型本质上是一种计算模型&#xff0c;基本的计算单元称为 Actor&#xff0c;换言之&#xff0c;在 Actor 模型中&#xff0c;所有的计算都是在 Actor 中执行的。在面向对象编程里面&#xff0c;一切都是对象&#xff1b;在 Actor 模型里&#xff0c;一…

master分支删除文件_Git分支基础简介;创建分支;合并分支;删除分支;

目录为了演示&#xff1a;我们创建了一个本地仓库testBranch&#xff0c;一个远程仓库testBranchRe&#xff1a;1.当我们创建一个本地仓库的时候&#xff0c;这个本地仓库中就会有一个主分支&#xff0c;即master分支&#xff1b;2.每次提交&#xff0c;master就会向后移动一个…

跳动的菜单

<html> <head> <meta http-equiv"Content-Type" content"text/html; charsetgb2312" /> <title>模仿as效果的导航菜单</title> <style type"text/css"> <!-- a:link,a:visited { text-decoration: no…

Python 爬虫框架 - PySpider

Python爬虫进阶四之PySpider的用法&#xff1a;http://cuiqingcai.com/2652.html 网络爬虫剖析&#xff0c;以Pyspider为例&#xff1a;http://python.jobbole.com/81109 Python爬虫利器六之PyQuery的用法&#xff1a;https://cuiqingcai.com/2636.html 爬虫框架pyspider个人总…

AI技术加持,让协作机器人更安全

来源&#xff1a;机器人创新生态丨公众号来自众家新创公司与实验室的碰撞侦测与追踪技术&#xff0c;将使得在人类与其他移动物体周边的协作机器人更安全。一个美国圣地亚哥大学&#xff08;University of San Diego&#xff09;的团队便开发了一种更快速的算法&#xff0c;能协…

RSA签名算法

文章目录前言一、RSA是什么&#xff1f;前言 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、RSA是什么&#xff1f; RSA数字签名算法的过程为&#xff1a;A对明文m用解密变换作: (公钥用来加密&#xff0c;私钥用来解密&#xff0c;数字签名是用…

捕获异常_Recover捕获异常

“ 本文来源于《The Go Programming Language》”5.10. Recover捕获异常通常来说&#xff0c;不应该对panic异常做任何处理&#xff0c;但有时&#xff0c;也许我们可以从异常中恢复&#xff0c;至少我们可以在程序崩溃前&#xff0c;做一些操作。举个例子&#xff0c;当web服务…