数据绑定(Data Binding)

数据绑定(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()

    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)类。

你可能感兴趣的:(数据库,F#基础,F#,函数编程)