首页 > 代码库 > DataBinding examples

DataBinding examples

 

Databinding in Windows Forms demo (CSWinFormDataBinding)

/************************************* Module Header *************************************** Module Name:  MainForm.cs* Project:      CSWinFormDataBinding* Copyright (c) Microsoft Corporation.* * The CSWinFormDataBinding sample demonstrates the Windows Forms Data Binding technology.* Data binding in Windows Forms gives you the means to display and make changes to * information from a data source in controls on the form. You can bind to both traditional * data sources as well as almost any structure that contains data.* Windows Forms can take advantage of two types of data binding: * simple binding and complex binding. You can refer to this document for more information:* http://msdn.microsoft.com/en-us/library/c8aebh9k.aspx * * This source is subject to the Microsoft Public License.* See http://www.microsoft.com/opensource/licenses.mspx#Ms-PL.* All other rights reserved.* * History:* * 3/13/2009 3:00 PM ZhiXin Ye Created\******************************************************************************************/#region Using directivesusing System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;#endregionnamespace CSWinFormDataBinding{    public partial class MainForm : Form    {        public MainForm()        {            InitializeComponent();        }        private void Form1_Load(object sender, EventArgs e)        {            ////////////////////////////////////////////////////////////////////////////////            // Simple Binding Examples            //            #region Simple Binding Example 1 (Bind to class property)            // In this example the CheckBox is the data source            this.textBox1.DataBindings.Add("Text", this.checkBox1, "Checked");            #endregion             #region Simple Binding Example 2 (Bind to class property)            // In this example the Form itself is the data source.            // With the update mode set to DataSourceUpdateMode.Never the data source won‘t            // update unless we explicitly call the Binding.WriteValue() method.            Binding bdSize = new Binding("Text", this, "Size", true, DataSourceUpdateMode.Never);            this.textBox2.DataBindings.Add(bdSize);            this.btnSet.Click += delegate(object button, EventArgs args)            {                // Force the value to store in the data source                bdSize.WriteValue();            };            #endregion            #region Simple Binding Example 3 (Bind to DataTable field)            //  DataSource setup:            //              //  Create a Table named Test and add 2 columns            //   ID:     int            //   Name:   string            //            DataTable dtTest = new DataTable();            dtTest.Columns.Add("ID", typeof(int));            dtTest.Columns.Add("Name", typeof(string));            dtTest.Rows.Add(1, "John");            dtTest.Rows.Add(2, "Amy");            dtTest.Rows.Add(3, "Tony");            BindingSource bsTest = new BindingSource();            bsTest.DataSource = dtTest;            // Bind the TextBoxes            this.textBox3.DataBindings.Add("Text", bsTest, "ID");            this.textBox4.DataBindings.Add("Text", bsTest, "Name");            // Handle the button‘s click event to navigate the binding.            this.btnPrev.Click += delegate(object button, EventArgs args)            {                bsTest.MovePrevious();            };            this.btnNext.Click += delegate(object button, EventArgs args)            {                bsTest.MoveNext();            };            #endregion            ////////////////////////////////////////////////////////////////////////////////            // Complex Binding Examples            //            #region Complex Binding Example 1 (Diplaying data from database)            // This example is done by the Visual Studio designer.            //            // Steps:            // 1. Click the smart tag glyph (Smart Tag Glyph) on the upper-right corner of             //    the DataGridView control.            // 2. Click the drop-down arrow for the Choose Data Source option.            // 3. If your project does not already have a data source, click             //    "Add Project Data Source.." and follow the steps indicated by the wizard.             // 4. Expand the Other Data Sources and Project Data Sources nodes if they are             //    not already expanded, and then select the data source to bind the control to.             // 5. If your data source contains more than one member, such as if you have             //    created a DataSet that contains multiple tables, expand the data source,             //    and then select the specific member to bind to.             #endregion            #region Complex Binding Example 2 (Displaying data from business objects)            // Data Source Setup:            BindingList<Customer> blc = new BindingList<Customer>();            blc.Add(new Customer(1, "John", 10.0M));            blc.Add(new Customer(2, "Amy", 15.0M));            blc.Add(new Customer(3, "Tony", 20.0M));            //Bind the DataGridView to the list of Customers using complex binding.            this.dataGridView2.DataSource = blc;            #endregion            #region Complex Binding Example 3 (Master/Detail Binding)            // Data Source Setup:            DataTable dtMaster = new DataTable("Custotmer");            DataTable dtDetail = new DataTable("Order");            dtMaster.Columns.Add("CustomerID", typeof(int));            dtMaster.Columns.Add("CustomerName",typeof(string));            dtDetail.Columns.Add("OrderID", typeof(int));            dtDetail.Columns.Add("OrderDate",typeof(DateTime));            dtDetail.Columns.Add("CustomerID", typeof(int));            for (int j = 0; j < 5; j++)            {                dtMaster.Rows.Add(j, "Customer " + j.ToString());                dtDetail.Rows.Add(j, DateTime.Now.AddDays(j), j);                dtDetail.Rows.Add(j+5, DateTime.Now.AddDays(j+5), j);            }            // Create a DataSet to hold the two DataTables            DataSet ds = new DataSet();            ds.Tables.Add(dtMaster);            ds.Tables.Add(dtDetail);            // Add a relationship to the DataSet             ds.Relations.Add("CustomerOrder",                ds.Tables["Custotmer"].Columns["CustomerID"],                ds.Tables["Order"].Columns["CustomerID"]);            BindingSource bsMaster = new BindingSource();            bsMaster.DataSource = ds;            bsMaster.DataMember = "Custotmer";            BindingSource bsDetail = new BindingSource();            // Bind the details data connector to the master data connector,            // using the DataRelation name to filter the information in the            // details table based on the current row in the master table.             bsDetail.DataSource = bsMaster;            bsDetail.DataMember = "CustomerOrder";            this.dgvMaster.DataSource = bsMaster;            this.dgvDetail.DataSource = bsDetail;            #endregion        }    }    #region Customer Class    public class Customer    {        // Private variables        private int _id;        private string _name;        private Decimal _rate;        // Constructor        public Customer()        {            this.ID = -1;            this.Name = string.Empty;            this.Rate = 0.0M;        }        public Customer(int id, string name, Decimal rate)        {            this.ID = id;            this.Name = name;            this.Rate = rate;        }        // Properties        public int ID        {            get { return _id; }            set { _id = value; }        }        public string Name        {            get { return _name; }            set { _name = value; }        }        public Decimal Rate        {            get { return _rate; }            set { _rate = value; }        }    }    #endregion}
View Code

 

DataBinding examples