Flash MX 数据绑定(通用3篇)
Flash MX 数据绑定 篇1
一个数据绑定可以通过 Binding 对象来描述,其中包含数据源,要绑定的属性路径(Path),目标,目 标属性等,
其中目标属性必须是依赖属性(DependencyProperty)。
为了说明方便,首先定义一个数据类:
public class Person
{
public int Age { get; set; }
public string Name { get; set; }
}
例子1:
public partial class Page : UserControl
{
public Page
{
InitializeComponent();
var persons = new List
();
for(var i=0; i< 5; i++)
{
persons.Add(new Person {Name = “Person ” + i.ToString(), Age = 20 + i});
}
list1.DataContext = persons;
}
}
这里仅指定了 list1 的 DataContext 属性 ,运行后发现页面没有显示。
如果在页面里改一改:
会发现绑定成功。但是数据项显示为默认的 Person 对象 ToString() 后的表示,不太友好。如下图 :
或者,也可以将后台代码改成:
list1.ItemsSource = persons;
而页面 markup 仍然是:
这样也能绑定成功。
这里的原因在于:ListBox 通过 ItemsSource 里的数据去填充数据项,所以直接给这个属性赋值是可 以的。
或者,通过空绑定语法 {Binding},指定 ItemsSource 属性绑定为数据源的对象本身(未指定绑定路 径)。而数据源就是通过 DataContext 获得的,并且这个属性的数据可以从父对象继承下来。
下面给 ListBox 指定列表项的数据模板,让它显示的好看一点:
显示如下:
还可以将 DataTemplate 定义到 App 的 Resource 里去,以便于重用,
App.xaml:
xmlns:x=“schemas.microsoft.com/winfx//xaml”
x:Class=“SilverlightTestApp.App”
Page.xaml:
xmlns=“schemas.microsoft.com/winfx/2006/xaml/presentation”
xmlns:x=“schemas.microsoft.com/winfx/2006/xaml”
Width=“400” Height=“300”>
运行后效果一样。
Flash MX 数据绑定 篇2
Flash动画已在网页中广泛使用以增加网站的动态效果。如果能把FIash动画和数据库连接起来,使F1ash根据用户的要求读取数据库然后动态显示出来,那么在工业现场就可以通过这种形式实现对现场实时数据的监测[1]。由PLC采集来的现场设备信号及数据不但可以通过组态软件进行监控,而且可以将这些数据以网页的形式进行发布,从而可以方便具有访问权限的网内用户在线浏览。该方法已经在某选煤厂信息化中得以稳定的应用。
Web服务是一段位于Internet上的业务逻辑。可以通过标准的Internet协议(如H1TIP),供客户端的计算机应用程序访问,从而实现整个互联网环境上的服务共享[2]。
2 基本原理
现在,Flash MX已经拥有与数据库交互的功能,但是Flash本身暂时还不具有直接与数据库进行信息交换的能力,必须借助于ASP、PHP等服务器端的脚本程序来实现信息传递。ASP(Microsoft Active Server Pages)是微软公司推出的用以取代CGI的新技术,它与ADO(Active Data Object,一种新的数据访问模型)的充分结合,提供了强大的数据库访问功能,使之成为进行网上数据库管理的重要手段。在Flash中可以通过Action Script中的Load Variables Num指令从ASP网页中获取数据,其中A S P网页的任务就是从S Q L数据库中读取信息并输出信息。ASP文件可使用reponse.write输出信息。
3 SQL Server数据库的设计
本文采用的是支持ODBC(开放式数据库互连)接口的SQL Server2000作为后台数据库,它是微软公司发布的一种性能优越的面向客户机/服务器的关系型数据库管理系统。它与Windows NT/2000等操作系统紧密集成,是创建运行在多种操作系统平台上的平稳和高性能的数据库应用程序[3]。
SQL数据库用来存放组态软件上传的实时数据。在安装好该数据库之后,启动SQL Server2000的企业管理器,选择“新建数据库”选项,建立新的数据库-cim。展开cim库,右击“表”图表,选择“新建表”选项,建立两个新表分别存放开关量KGL_SS、模拟量M N L_S S。为了ASP文件取数方便,设置表的属性第一列为设备点名,第二列为数值。其效果如图1所示。
4 编写ASP文件
4.1 连接SQL
ADO.2.0允许不但可以直接通过O D B C连接S Q L Server,而且可以通过OLE DB访问SQL Server。创建与SQL Server连接的Connection对象需要调用Server对象的Create Object方法与Connection对象的Open方法。本文通过下面的语句实现了如何通过O D B C连接SQL Server:
如果你不希望将这条长参数传到Connection.Open方法,那么可以将连接字符串存储在global.asa文件的Application对象中,代码如下所示:
其中:“dsn=da”是ODBC数据源名称;“uid=sa;pwd=******”是SQL Server数据库登陆的登陆名和密码。
4.2 执行SQL并输出信息
A D O主要功能之一是执行并控制数据源的事务操作。Connection对象除了用来管理数据库连接,还可以管理数据库事务。Connection对象的Execute方法来执行一条SQL语句并且返回Recordset对象。Connection对象的Execute的语法格式为:
其中:Command Text参数为字符串类型,包含要执行的SQL语句、表名、存储过程或特定提供者的文本;Records Affected参数是可选的长整形变量,提供者想其返回操作所影响的记录数目;Options参数为可选的长整型值,指示提供者应如何为Command Text参数赋值。
完整的A S P文件代码如下,实现从数据库S Q L Server中获取实时数据并输出:
模拟量处理代码与开关量类似。其中:表KGL_SS用来存放开关量即现场设备的开停、报警、状态等数据;MNL_SS用来存放仓位、电流、电压等数据。上述A S P实现了从两张表中依次读取第一列点名和第二列数值。通过配置IIS实现了在Internet信息服务的WEB站点中运行A S P,运行截图如图2所示:
由上图所示,从数据库读取的数据是以:“点名=数值&点名=数值……”这样的形式存在A S P网页中的。
5 Flash的设计
数据已经存放在A S P网页中。下面的工作就是如何在Flash中将这些数据显示出来并以W E B发布的形式发布出去。不同的数据类型在Flash中处理的方式有所不同,但前提都必须先将ASP中的数据传送到Flash中来。首先,打开Flash在图层1:帧1中编写脚本语言。如图3所示:
其中脚本代码如下:
其中,“chen.asp”是读取数据库ASP的文件名,编写好脚本之后可以测试影片此时数据已经被Flash接收。
对接收到的两种不同类型的数据进行处理,对于模拟量在场景1中添加动态文本框,变量名与SQL中的点位的名称要求一致。这样在测试影片时就可以实时显示模拟量的数据。而对于数字量的处理方式有所不同,需要制作一个影片剪辑,在不同的帧显示不同的颜色,例如设备101开停以两种不同的颜色红、蓝显示,影片剪辑名称为deng101。在“chen.asp”脚本中添加以下程序代码实现跟随设备不同状态以不同颜色进行显示,如图4所示:
6 结束语
本文介绍了如何通过ASP程序、Flash、SQL Server数据库实现根据用户的要求读取数据并发布。通过ASP实现了Flash与SQL数据库的无缝连结,并以网页的形式进行发布,可以方便具有访问权限的网内用户在线浏览。并在Windows2000Server+Flash MX+IIS5.0下调试成功,在某选煤厂运行良好。
参考文献
[1]唐永芬,陶玲.通过ASP实现FLASH对数据库的访问[J].连云港职业技术学院学报,2002,15(2):37-38。
[2]丁峰,邵定宏.WebServer和ASP.NET在GIS的应用探讨[J].微计算机信息,2005,21(1):162-163。
Flash MX 数据绑定 篇3
关键词:.Net编程技术,数据绑定,网页
.Net Framework提供了数据绑定的功能, Asp.Net中数据绑定 (Data Bind) 是使页面上的控件的属性与数据库中的数据产生对应关系, 使得控件的属性与数据库的变动同步, 同时有利于界面与逻辑的分离, 是Asp.Net中经常使用的一种非常重要的技术。Asp Net的数据绑定技术非常灵活, 且数据源非常丰富, 要想用好它, 这就必须深入了解.Net数据绑定技术, 掌握其对数据、控件的要求及限制, 目前众多.Net教程未能给出相关的说明, 致使程序设计者在学习使用时走了许多弯路, 甚至不知出错在何处, 网上也常看到为此求助信息。因此理出清晰的数据绑定方法与思路, 对掌握.Net编程技术受益非浅。
1 数据绑定形式与适用范围
1.1 数据绑定的数据源
数据的绑定的各种数据源, 可以是变量、表达式、列表、数据库、XML文档、其他控件的信息。
1.2 数据绑定形式
无论是何种形式的数据绑定, 呈现的数据绑定表达式必须包含在<%#和%>字符之间, ASP的<%=str%>方式基本上被摈弃。
例见:绑定到变量:<%#User Name%>
绑定到简单属性:Text="<%#变量名%>", 或服务器控件的属性值
例如:
绑定到集合:
绑定到表达式:<%# (class1.property1.To String () +", "+class1.property2.To String () ) %>
绑定到方法返回值:<%#Get Safestring (str) %>
绑定到Hashtable:<%# ( (Dictionary Entry) Container.Data Item) .Key%>
绑定到Array List:<%#Container.Data Item%>
注意:若数组里放的是对象则可能要进行必要的转换后再绑定如:
<%# ( (对象类型) Container.Data Item) .属性%>
绑定到Data View, Data Table, Data Set:
<%#DataBinder.Eval (Container.DataItem, "xxxx") %>
或者
<%#DataBinder.Eval (Container, "DataItem.xxxx") %>.NET Framework 2.0.NET Framework 3.0.NE
在.NET Framework 2.0以上版本.NET Framework 3.0.NET Framework 3.5.NET Framework 4中还有
<%# ( (Data Row View) Container.Data Item) ["字段名"]%>或
<%# ( (Data Row View) Container.Data Item) .Rows[0]["字段名"]%>
ASP.NET数据绑定语法支持公共变量、页面的属性和页面中其它控件的属性的绑定。但由于数据绑定表达式的值是String类型的, 对于生成期望的结果常需要进行强制转换值的类型, 这一点经常被忽视而致出错。
1.3 数据绑定适用范围
数据绑定表达式可以是一个变量, 可以是一个带返回值的C#或者VB.NET方法, 还可以是某个控件的某个属性的值, 也可以是C#或者VB.NET对象的某个字段或者属性的值等等, 数据绑定表达式可以出现在页面的位置如下:
1) 数据绑定表达式包含在页面中的位置, 通常将数据绑定表达式包含在服务器控件或者普通的html元素的开始标记中“属性名.属性值”对应的值侧。
例如以下的引用:
注意:并不是所有的HTML属性都可以绑定, 有些属性例如runat属性必须是"server"常量, 即使绑定的字符串是server, 也会导致分析器分析时出错;而服务器控件中Head Template之类也不适宜数据绑定。
2) 可以将数据绑定表达式包含在Javascript代码中, 从而实现在Javascript中调用C#或者VB.NET的方法。
例如:Deafult1.aspx:
一般只要绑定的数据和Java Script中数据类型兼容即可。
3) 可以是用Bind, Date Bind.Eval, Eval取得的数据表的字段, 这种最常用于服务器控件的绑定, 用法也较复杂, 以下将重点介绍它们的用法。
2 复杂数据源的绑定
复杂数据源主要有Data View、Data Set和各种数据库等。这时常常用到与数据有关的控件Drop Down List, List Box, Check Box-List, Radio Button List以及数据服务器控件Grid Veiw (Data Grid) 、Data List、Reapter。首先要将ADO.NET的Data Reader、Data Set或者是Data Table对象赋给控件的Data Source属性, 然后执行控件的Date Bind方法。
例如:在Deafult2.aspx页面初始化程序Page_Load中添加如下代码
所有的Data Bind都应该用Data Bind () 函数来建立数据绑定, 是整个页面PAGE和所有控件的一个方法, 也就是说, 如果用的是Page的Data Bind方法, 那么整个页面所有绑定都会执行。它可以被页面所有的控件使用。如果只执行某控件Data List1或者DropDown List1之类的Data Bind方法, 那么只有相应控件的绑定才会发生, 这也是容易出错的地方。Data Bind常在页面载入Load时就被绑定。
3 与数据库有关的数据绑定方法的比较
获取一个数据源然后绑定到页面、Grid View……也就是用Data Bind () 方法绑好了, 就可以使用绑定表达式将数据绑定在页面上, 在页面的呈现数据时经常会用到如下多种形式的数据绑定表达:
ASP.NET 2.0改善了模板中的数据绑定操作, 把v1.x中的数据绑定语法Data Binder.eval_r (Container.Data Item, fieldname) 简化为eval_r (fieldname) 。Eval方法与Data Binder.Eval一样可以接受一个可选的格式化字符串参数, 最后一个参数设定字段的显示样式。例如c代表货币, p代表百分号, d代表短日期格式显示, f代表浮点数现实, f3代表小数点后三位, 依次类推。
在.NET Framework 2.0以上版本中还有
<%# ( (Data Row View) Container.Data Item) ["字段名"]%>
<%#string.Format ("{0:c}", ( (Data Row View) Container.Data Item) ["字段名"]) %>
用String.Format方法设定字段的显示样式。例如c、p、d、f代表格式同上。
1) 语法与使用位置的不同
缩短的Eval语法与Data Binder.Eval的不同点在于, Eval会根据最近的容器对象 (例如Data List Item) 的Data Item属性来自动地解析字段, 而Data Binder.Eval需要使用参数来指定容器。由于这个原因, Eval只能在数据绑定控件的模板中使用, 而不能用于Page (页面) 层。当数据绑定表达式是Eval ("数据库中某表的某个字段") 时, 必须把Text Box1这类服务器控件放在某个循环显示的控件的模板中才正确, 否则会提示:Eval () 、XPath () 和Bind () 这类数据绑定方法只能在数据绑定控件的上下文中使用。其实就是要把Text Box1放在像Repeater, Data List, Grid View这样的控件的模板中。
Eval方法是静态单向绑定方法, 所以Eval函数用于单向 (数据是只读的) 绑定。
Bind方法是双向绑定, 支持读/写功能, 所以Bind函数用于双向 (数据源可更改才能用) 绑定。该方法可以检索数据绑定控件的值, 并将任何更改返回服务器端提交回数据库, 服务器可以处理更改后的数据, 如存入数据库。
2) 绑定方法效率的不同
Eval方法执行时候会调用Data Binder.Eval方法, 一般使用较多的是Data Binder类的Eval方法。Data Binder.Eval方法在运行时使用反射reflection执行后期绑定计算, 开销比较大, 这样对于同时要绑定大量的数据效率要低一些, 会导致性能明显下降。所以三者中<%# ( (Data Row View) Container.Data Item) ["字段名"]%>的性能最好。
3) 一些错误用法
经常看到初学者把Data Binder.Eval (Container.Data Item, "Name") 和Container.Data Item ("Name") 视为同等, 其实Data Binder是System.Web里面的一个静态类, 而Container则根本不是任何一个静态的对象或方法, 它是ASP.NET页面编译器在数据绑定事件处理程序内部声明的局部变量, 其类型是可以进行数据绑定的控件的数据容器类型 (如在Repeater内部的数据绑定容器叫Repeater Item) , 在这些容器类中基本都有Data Item属性, 因此可以写Container.Data Item, 这个属性返回的是正在被绑定的数据源中的那个数据项。如果数据源是Data Table, 则这个数据项的类型实际是Data Row View。
通常情况下我们可以看到的后台代码都执行完毕后再去到前台代码中进行赋值绑定, 而<%#...%>是在Data Bind () 方法之后被调用, 一旦调用了Data Bind () , 则它对应的控件将绑定变量, 因此, 请注意:如果在Data Bind () 后再修改变量, 那么绑定的就不是最新值了, 页面就变成需要刷新才能看到期望的结果, 这就需要在完成变量的赋值后, 再去Data Bind () 。
以上总结对比了各种数据绑定的特点与适用范围, 对一些错误用法进行了澄清, 希望读者就此对Asp.Net数据绑定技术不再困惑。
参考文献
[1]文东, 秦敬祥.ASP.NET程序设计基础与项目实训[M].北京:中国人民大学出版社, 北京科海电子出版社, 2009.
[2]东名, 吴明月.ASP.NET动态网页设计高手[M].北京:清华大学出版社, 2001.
【Flash MX 数据绑定】推荐阅读:
数据绑定10-28
WPF/Silverlight2.0 Binding(数据绑定)机制详解11-30
模型绑定11-11
动态绑定12-30
MAC绑定07-04
事件动态绑定07-29
多网卡绑定12-02
工商银行网上绑定流程05-28
U盘绑定操作步骤_201011207-04
数据捕获与数据控制01-18