数据绑定(Data Binding)

数据绑定是把一个值或一组值映射到用户界面控件的过程,这个数据并不一定是来自关系型数据库,通常是来自于程序之外的系统,访问数据,并把它转换复杂的绑定状态的过程还是相当简单的。这就是为什么我们在这一章,而不是在第八章讨论这个主题的原因。下面的例子演示把数据库中的表绑定到组合框:

open System

open System.Collections.Generic

open System.Configuration

open System.Data

open System.Data.SqlClient

open System.Windows.Forms

// creates a connections then executes thegiven command on it

let opener commandString =

//read the connection string

letconnectionSetting =

ConfigurationManager.ConnectionStrings.["MyConnection"]

// create the connection and open it

let conn = newSqlConnection(connectionSetting.ConnectionString)

conn.Open()

// excute the command, ensuring the readwill close the connection

let cmd = conn.CreateCommand(CommandType =CommandType.Text,

CommandText =commandString)

cmd.ExecuteReader(CommandBehavior.CloseConnection)

// read each row from the data reader intoa dictionary

let generator (reader: IDataReader) =

ifreader.Read() then

letdict = new Dictionary<string, obj>()

forx in [ 0 .. (reader.FieldCount - 1) ] do

dict.Add(reader.GetName(x), reader.Item(x))

Some(dict)

else

None

// executes a database command returning asequence containing the results

let execCommand commandString =

Seq.generate

(fun() -> opener commandString)

(funr -> generator r)

(funr -> r.Dispose())

// get the contents of the contacts table

let contactsTable =

execCommand

"selecttop 10 * from Person.Contact"

// create a list of first and last names

let contacts =

[|for row in contactsTable ->

Printf.sprintf"%O %O"

(row.["FirstName"])

(row.["LastName"]) |]

// create form containing a ComboBox withresults list

let form =

lettemp = new Form()

letcombo = new ComboBox(Top=8, Left=8, DataSource=contacts)

temp.Controls.Add(combo)

temp

// show the form

Application.Run(form)

运行前面的代码,可以看到如图 9-1 的结果。

图 9-1 数据绑定的组合框

我们把前面的例子拆开来看一下,首先执行这个查询:

let contactsTable =

execCommand

"select top 10 * fromPerson.Contact"

接着,把结果的可枚举集合转换成可绑定的组合框,首先需要获得重要成员,然后把它映射到字符串集合,最后再转换成数组。然后,把集合绑定到控件来显示,通过设置控件的 DataSource 属性,它是最后的命名参数:

let combo = new ComboBox(Top=8, Left=8,DataSource=contacts)

这一章的示例虽然只讨论了组合框,但是,大多数 Windows 和网站控件都可以用相似的方法进行绑定,包括列表框(ListBox)和选择列表框(CheckListBox)类。下一节,我们将学习把数据绑定到更复杂的控件,数据网格视图(DataGridView)类。

数据绑定(Data Binding)

时间: 2024-10-07 12:21:05

数据绑定(Data Binding)的相关文章

WPF QuickStart系列之数据绑定(Data Binding)

这篇博客将展示WPF DataBinding的内容. 首先看一下WPF Data Binding的概览, Binding Source可以是任意的CLR对象,或者XML文件等,Binding Target需要有依赖属性.这样便可以进行Data Binding.请看下面的示例, C# public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); DataContext = new Pe

WPF中的数据绑定Data Binding使用小结

完整的数据绑定的语法说明可以在这里查看: http://www.nbdtech.com/Free/WpfBinding.pdf MSDN资料: Data Binding: Part 1 http://msdn.microsoft.com/en-us/library/aa480224.aspx Data Binding: Part 2 http://msdn.microsoft.com/en-us/library/aa480226.aspx Data Binding Overview http:/

WP8.1 Study5:Data binding数据绑定

一.数据绑定 最简单的编程UI控件的方法是写自己的数据来获取和设置控件的属性,e.g. , textBox1.Text = "Hello, world"; 但在复杂的应用程序,这样的代码很快就会变得笨拙,容易出错 因此,为了更加方便,使用XAML数据绑定到你的UI链接到一个在应用程序中包含应用程序的数据的类. 这个类class:是一个对于被称为视图模型的数据绑定(ViewModel)的数据源. UI控件可以从视图模型Viewmodel类的属性自动获取其显示值,而且通过改变Viewmod

Data Binding Library(数据绑定库)

引子 上图中有一些 TextView 和 Button 等,正常情况下,互联网APP都会从服务器抓取数值,然后在 Activity中 findViewById 再进行setText等等.这篇文章就是用来解放你的双手劳动力 的,使用数据绑定库可以不用去findView不用在写繁琐的 setText,只要从服务器获取json 转换成 javaBean格式然后 set,duang,,,,, 所有的值就自己展现在该有的地方了. Demo: https://github.com/Afra55/DataBi

Data Binding MVVM 数据绑定 总结

示例代码:https://github.com/baiqiantao/DataBindingTest 参考:精通Android Data Binding    Android Data Binding(数据绑定)用户指南 官方教程:Data Binding Guide    API 关于 Data Binding Data Binding 解决了 Android UI 编程的一个痛点,官方原生支持 MVVM 模型可以让我们在不改变既有代码框架的前提下,非常容易地使用这些新特性. Data Bin

XAML数据绑定(Data Binding)

Data Binding可以使得XAML标签属性的赋值更为灵活和方便.在绑定过程中,获取数据的标签成为目标标签:提供数据的标签成为源标签.在XAML中,一个标签的定义中只能有一次绑定操作.因此,为了满足多次绑定需求,Data Binding分为正向绑定和反向绑定.在目标标签中定义的绑定称为正向绑定,在源数据标签中定义的绑定称为反向绑定. 当一个标签需要从其他多个标签中获取数据,就可以使用一个正向绑定,然后使用多个反向绑定.当然,也可以直接使用多个反向绑定.

告别findViewById(),ButterKnife,使用Google Data Binding Library(1)

Data Binding Library 用数据绑定编写声名性布局,可以最大限度的减少findViewById(),setOnClickListener()之类的代码.并且比起findViewById(),所有view是一次性初始化完成,性能更快. Data Binding Library具有灵活性和不错的兼容性,支持2.1以后的版本. 需要 Android Plugin for Gradle 1.5.0-alpha1或以上版本. 至于怎么升级? https://developer.androi

Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion

前言 在Spring Framework官方文档中,这三者是放到一起讲的,但没有解释为什么放到一起.大概是默认了读者都是有相关经验的人,但事实并非如此,例如我.好在闷着头看了一遍,又查资料又敲代码,总算明白了. 其实说穿了一文不值,我们用一个例子来解释: 假定,现有一个app,功能是接收你输入的生日,然后显示你的年龄.看起来app只要用当前日期减去你输入的日期就是年龄,应该很简单对吧?可惜事实不是这样的. 这里面有三个问题: 问题一:我们输入的永远是字符串,字符串需要转成日期格式才能被我们的ap

Android Data Binding Library 官方文档(译)

地址:https://developer.android.google.cn/topic/libraries/data-binding/index.html 本文地址:http://blog.csdn.net/jjwwmlp456/article/details/54915981 Data Binding Library (数据绑定库),旨在减少绑定应用程序逻辑和布局所需的一些耦合性代码 最低支持Android 2.1 (API Level 7) 构建环境 使用gradle插件1.5-alpha