• 如何:用BindingSource将Windows Forms控件绑定到工厂对象


    在构建与数据交互的控件时,有时会发现有必要将控件绑定到生成其他对象的对象或方法。这样的对象或方法称为工厂。例如,您的数据源可能是方法调用的返回值,而不是内存或类型中的对象。您可以将控件绑定到这种数据源,只要该源返回一个集合即可。

    您可以使用BindingSource控件轻松地将控件绑定到工厂对象

    例子

    下面的示例演示如何通过使用BindingSource控件DataGridView控件绑定到工厂方法工厂方法名为 GetOrdersByCustomerId,它将在Northwind数据库中返回给定客户的所有订单。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication2
    {
        static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
        }
    }
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication2
    {
        public partial class Form1 : Form
        {
            // This is the TextBox for entering CustomerID values.
            private TextBox customerIdTextBox = new TextBox();
    
            // This is the DataGridView that displays orders for the
            // specified customer.
            private DataGridView customersDataGridView = new DataGridView();
    
            // This is the BindingSource for binding the database query
            // result set to the DataGridView.
            private BindingSource ordersBindingSource = new BindingSource();
    
            public Form1()
            {
                // Set up the CustomerID TextBox.
                this.customerIdTextBox.Location = new Point(100, 200);
                this.customerIdTextBox.Size = new Size(500, 30);
                this.customerIdTextBox.Text =
                    "Enter a valid Northwind CustomerID, for example: ALFKI," +
                    " then RETURN or click outside the TextBox";
                this.customerIdTextBox.Leave +=
                    new EventHandler(customerIdTextBox_Leave);
                this.customerIdTextBox.KeyDown +=
                    new KeyEventHandler(customerIdTextBox_KeyDown);
                this.Controls.Add(this.customerIdTextBox);
    
                // Set up the DataGridView.
                customersDataGridView.Dock = DockStyle.Top;
                this.Controls.Add(customersDataGridView);
    
                // Set up the form.
                this.Size = new Size(800, 500);
                this.Load += new EventHandler(Form1_Load);
            }
    
            // This event handler binds the BindingSource to the DataGridView
            // control's DataSource property.
            private void Form1_Load(
                System.Object sender,
                System.EventArgs e)
            {
                // Attach the BindingSource to the DataGridView.
                this.customersDataGridView.DataSource =
                    this.ordersBindingSource;
            }
    
            // This is a static factory method. It queries the Northwind
            // database for the orders belonging to the specified
            // customer and returns an IEnumerable.
            public static IEnumerable GetOrdersByCustomerId(string id)
            {
                // Open a connection to the database.
                string connectString = "Integrated Security=SSPI;" +
                    "Persist Security Info=False;Initial Catalog=Northwind;" +
                    "Data Source= localhost";
                SqlConnection connection = new SqlConnection();
    
                connection.ConnectionString = connectString;
                connection.Open();
    
                // Execute the query.
                string queryString =
                    String.Format("Select * From Orders where CustomerID = '{0}'",
                    id);
                SqlCommand command = new SqlCommand(queryString, connection);
                SqlDataReader reader =
                    command.ExecuteReader(CommandBehavior.CloseConnection);
                return reader;
            }
    
            // These event handlers are called when the user tabs or clicks
            // out of the customerIdTextBox or hits the return key.
            // The database is then queried with the CustomerID
            //  in the customerIdTextBox.Text property.
            void customerIdTextBox_Leave(object sender, EventArgs e)
            {
                // Attach the data source to the BindingSource control.
                this.ordersBindingSource.DataSource =
                    GetOrdersByCustomerId(this.customerIdTextBox.Text);
            }
    
            void customerIdTextBox_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.Return)
                {
                    // Attach the data source to the BindingSource control.
                    this.ordersBindingSource.DataSource =
                        GetOrdersByCustomerId(this.customerIdTextBox.Text);
                }
            }
        }
    }
  • 相关阅读:
    linux 校时命令
    vba_按钮
    ASP.NET MVC3快速入门——第一节、概述
    ASP.NET MVC3快速入门——第二节、添加一个控制器
    ASP.NET MVC3快速入门——第三节、添加一个视图
    ASP.NET程序中常用的三十三种代码
    LINQ定义的标准查询操作符
    ADO.NET
    java编程 反射类的使用
    Struts2 源代码学习 (一)
  • 原文地址:https://www.cnblogs.com/wfy680/p/14798053.html
Copyright © 2020-2023  润新知