Flash MX 数据绑定(3篇)
1.Flash MX 数据绑定 篇一
在Android里,Service的数据绑定是一种重要的用法,我们知道Service与Activity一样是运行在当前应用进程的主线程里面的,他们之间交互的方式有多种,下面我来介绍一下如何使用数据绑定的方法通过Service向Activity交互数据
1.首先我们要定义一个接口,接口里定义我们需要实现的方法
?
1
2
3
4
public interface ICount {
public int getcount;
}
2.接下来我们需要一个Service的子类实现本接口,定义一个ServiceBinder的内部类,通过它的对象来绑定数据,要注意的是我们如果要进行耗时操作的话,仍然需要在Service中创建线程,Service自身就是运行在主线程中的,还有一个就是OnBind的返回值是IBinder,但是这里我使用ServiceBinder对象是继承Binder的,那为什么这里可以这么写呢?因为Binder是Base class for a remotable object, the core part of a lightweight remote procedure call mechanism defined by IBinder,是直接从IBinder这里的直接子类。
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
public class BackGroundService extends Service implements ICount {
private boolean disable; //线程是否执行的标识位
private int count; //计数
private ServiceBinder serviceBinder = new ServiceBinder();
public class ServiceBinder extends Binder implements ICount {
@Override
public int getcount() {
// TODO Auto-generated method stub
return 0;
}
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return serviceBinder;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
new Thread(new Runnable() {
// @Override
public void run() {
while (!disable) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
count++;
System.out.println(“CountService Count is ” + count);
}
}
}).start();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
return super.onStartCommand(intent, flags, startId);
}
@Override
public int getcount() {
return count;
// TODO Auto-generated method stub
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
this.disable = true;
// Log.v(“ CountService ”, “ on destroy ”);
System.out.println(“Service destroy...”);
super.onDestroy();
}
}
2.Flash MX 数据绑定 篇二
数据绑定是从一个对象中提取信息, 并在应用程序的用户界面中显示所提取的信息。同时这种绑定存在着单向绑定, 即只能够查看绑定的信息; 双向绑定, 即既能查看绑定的信息也能够修改绑定的信息。是开发应用程序时经常使用到的一种技术。
WPF ( Windows Presentation Foundation) 是一种用 于Windows的图形显示系统。与以往的Windows窗体不同, WPF是针对.NET这一技术而设计的, 受现代显示技术 (如HTML和Flash) 以及硬件加速技术的影响。
介绍的就是基于WPF和Visual C# 编程语言进行窗体控件数据绑定的相关流程以及代码编写。这与以往的Windows窗体开发过程中的数据绑定既有相似的地方也有其自身的特点。特别是在后台的实现方式上有重大的改变, 增加了很多新功能和细微调整。虽然与Windows窗体开发中的数据绑定使用了一些相同的概念, 但在实现中却是不同的代码。
在基于数据库进行信息系统软件开发过程中, 总是要与数据库中各种各样的数据打交道。以一个简单的员工管理系统作为例子。 在员工数据库中存在一张员工信息表, 表中有字段“ID”、“Name”、“Tel”分别记录了员工的“编号”、“姓名” 和“联系电话”。为了简单起见, 只列举了少数几个字段, 方便进行演示。字段的多少对采用的方法没有任何影响。
在员工管理系统的用户界面上, 希望当用户只要查找或点击某一个员工的编号, 与员工编号的相关联的信息就相应出现, 例如此员工编号的姓名和联系电话。如图1所示。
要实现这个功能, 不使用数据绑定技术当然也能够实现。但是这是需要大量的代码来实现的, 在上面的演示中只使用了3个控件来显示数据 , 而且数据库中的字段也只有寥寥几个。如果应用到一个庞大的数据库系统中, 如果对每一个控件或是字段的显示都要通过代码来实现那将是一个复杂的工程, 而且非常容易顾此失彼, 出现各种各样的错误。
而使用数据绑定技术, 只需要不多的代码就能够实现这一功能, 而且易修改、易维护。
2 数据绑定前的准备工作
在与数据库连接之前, 先建立一个员工类Employee类, 代码如下:
在这个员工类中, 具有3个属性, 分别记录了员工的编号、姓名和电话。这是需要在控件中显示和修改以及保存的信息。
在数据绑定中, 一般绑定的数据都来自数据库中。例如要绑定 的数据库 中存在一 张员工表 , 表中有字 段“ID”、“Name”、“Tel”。首先要将数据库代码封装到一个专门的类中。这个类中主要提供查找数据的各种方法, 再建立数据访问类的基本框架:
小技巧之一: 如何在整个应用程序中使用同一个数据库实例。
建立了数据库类, 但是发现存在一个问题。当在不同的窗体或自定义控件中需要访问数据库时, 必须在每一个窗体或者自定义控件中, 创建StoreClass类的一个实例。这样才能保证在窗体或自定义控件中做到对数据库的访问。
这种做法既麻烦又效率低下。需要一种方式使得在整个应用程序中只需创建StoreClass类的单一实例, 就能够在整个应用程序中访问数据库。
解决办法就是在Application类中创建 一个实例 , 通过Application类的静态属性使用该实例。具体代码如下:
这样当需 要使用StoreClass类中的GetOneInformaiton ( ) 方法时, 就直接调用App.DB.GetOneInformation ()。
3 单个对象的数据绑定
经过前面的工作, 现在需要做的就是将绑定对象显示出来。首先需要在窗体的.xaml文件中编写相应的XAML代码。这主要是设计控件在窗体中的位置和相应功能。代码中加粗的部分就 是对控件TextBlock的Text属性进行绑定。将Employee类中的属性“ID”、“Name”和“Tel”分别绑定到3个TextBlock控件上。
但仅仅这样是不够的, 现在虽然程序已经可以运行, 但控件上不会显示任何信息。这是因为虽然定义了绑定, 但是没有获得数据的源对象。要实现数据绑定, 就要对Grid控件中的DateContext属性进行 设置。首 先将Grid控件命名 为“DateBinding” , 然后设置其DateContext属性。设置成功后 , 所有绑定表达式都会通过该属性使用数据填充自身。
当用户单机“获取一个员工信息”按钮时, 会响应下面的事件处理程序。
小技巧之二: 如何处理具有Null值的绑定。
通过以上代码, 可以获得员工表中的信息, 并将其绑定在相应的控件上。但是在数据库中可能会有可空字段, 在字段中Null值表示值缺失或是值不可用。为了处理这类信息的显示 , 可以在绑定表达式中设置TargetNullValue属性改变WPF对null值的处理。例如 , 当Employee.tel属性值为null值时 , 要显示为“无具体信息”, 可以在Textblock中添加以下代码:
Text="{Binding Path=Tel, TargetNullValue=[无具体信息]}"
TargetNullValue属性中方括号内的值可以自定义设置 , 用来帮助用户确认显示的文本不是来自于数据库中的值。
4 对象集合的数据绑定
通过前面的步骤, 已经将数据绑定到单个对象上去了, 而且非常直观。现在讨论如何将数据绑定到对象集合中去, 这一功能也是经常使用到的。例如在员工信息管理系统中, 当然不能只有一个员工, 要使每一个员工的信息都能够只需轻轻一点就能够显示出来, 这就需要将数据绑定到对象集合中去。
依旧以前面的员工表为例, 这次使用了一个ComboBox控件命名为“MoreDate”来显示所有员工的编号。为了简要说明, 所以在数据库中一共只有两个员工。如果要显示更多数量的员工信息, 方法是一样的。
首先在数据库中需要定义一个方法, 来查找所有员工的信息。
然后当点击“获取所有员工信息”按钮时, 响应一个事件。
经过这两步就已经通过访问数据库将需要显示的信息已经提取出来, 下面就将这些数据绑定到窗体控件上去。实现的方法有几种, 采用最快并且最少编写代码的方式来实现。那就是对Grid.DataContext属性设置绑定表达式。
当首先显 示窗体时 , 在列表中 没有选择 任何内容 , ComboBox. SelectedItem属性值为Null, 所以不会显示任何信息。点击完“获取所有员工信息” 按钮后, 再点击ComboBox控件就会发现, 里面有所有员工的编号。点击其中员工的编号, 在其他已存在绑定表达式的控件中就会出现相应内容。如
图2所示。
小技巧之三: 如何让ComboBox显示需要的信息
当ComboBox. ItemsSource获取的是一个实例的所有信息时, 如果不做处理, 那么当点击控件时, 会看到的是这个类, 而不是需要的信息。如图3所示。
如果要显示员工编号, 就需要对控件进行处理。要设定ComboBox.DisplayMemberPath属性。将此属性设置为“ID”。
这样就可以得到需要的效果。
5 结语
通过以上几步, 就完成了对窗体控件的数据绑定。发现这已经具备了很多的功能。
(1) 可以很方便地点击员工编号就可以看到员工的其他信息, 如: 姓名和电话。
(2) 可以修改员工信息中的内容 , 可以轻松修改TextBox控件中的内容。
(3) 修改的内容已经保存 , 并提交。例如修改了某编号 下员工姓名, 会发现这种改变已经保存下来。当再次点击此员工编号, 姓名中显示的是更新后的信息。当然这种改变仅仅只是控件显示信息, 在数据库中的信息还是需要使用UPDATE方法对其进行更新。
3.Flash MX 数据绑定 篇三
关键词:数据绑定控件,典型用法
在ASP.NET中, GridView是使用的最多的数据绑定控件, 但是大部分只是用它来显示数据, 很少考虑到用户的操作习惯, 可操作性很差, 因此本文以访问常用示例数据库Northwind为例, 介绍在网站设计中GridView的典型用法, 使它具有良好的交互性。
1 通过PageIndexChanging事件实现对GridView控件的分页
1) 当GridView控件读取大量的数据时, 数据记录往往无法在当个页面中完全呈现, 这时需要对GridView控件进行分页, ASP.NET中的GridView有一个内置的分页功能, 可支持基本的分页, 用户可以对GridView进行默认分页或创建自定义的分页;
2) 创建一个网站, 默认主页为Default.aspx, 在Default.aspx文件中添加一个GridView控件, 并将AllowPaging属性设置为true;
3) 在Default.aspx.cs文件中引入命名空间System.Data.SqlClient;
在Page_Load事件中实现GridView显示数据, 在PageIndexChanging事件中实现分页功能, 代码如下:
2 在GridView控件中实现自动编号及定制GridView控件外观
1) 当页面比较多时, 往往需要在GridView中增加一列自动递增序号列, 用来标识每一行的序号。在步骤1的基础上继续完善GridView的功能。
选中GridView右上角的智能标记点击“添加新列”, 添加一个模板数据绑定列TemplateField, 并在ItemTemplate模板中添加一个Label控件用于显示编号序列。代码如下:
当鼠标悬停在某一行时, 效果如下图, 交互性更好。
参考文献
[1]孟庆昌.ASP.NET网站开发先锋.机械工业出版社, 2010, 2.
【Flash MX 数据绑定】推荐阅读:
一个网卡绑定多个IP地址Unix系统06-22
大数据挖掘与数据分析07-13
快速转移数据的方法数据库教程07-10
谈谈数据从sql server数据库导入mysql数据库的体验07-07
读《大数据时代》有感:大数据与小生活08-01
如何获得当前数据库的SCN值数据库教程07-05
财务数据报送06-14
数据岗位描述07-17
西部数据07-31
数据融合08-17