国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

WinForm之BindingSource基礎操作實例教程

2020-01-24 02:28:55
字體:
來源:轉載
供稿:網友

通常我們在進行數據綁定的時候,常用的數據源有DataSet、DataTable、BindingList<T>、還有強類型數據源。今天我們來通過實例了解一下BindingSource組建,分享給大家供大家參考借鑒之用。

BindingSource的兩個用途:

(1)首先,它提供一個將窗體上的控件綁定到數據的間接層。這是通過將 BindingSource 組件綁定到數據源,然后將窗體上的控件綁定到 BindingSource 組件來完成的。與數據的所有進一步交互(包括導航、排序、篩選和更新)都是通過調用 BindingSource 組件來完成的。
(2)其次,BindingSource 組件可以充當強類型數據源。使用 Add 方法向 BindingSource 組件添加類型會創建一個該類型的列表。

一、對BindingSource的基礎操作――增刪改查

實例代碼如下:

  public partial class Form1 : Form  {    //注當前DGV已經綁定到 ID 和 Name 列    private BindingSource source = new BindingSource();    public Form1()    {      InitializeComponent();    }    //窗體加載    private void Form1_Load(object sender, EventArgs e)    {      this.source.DataSource = typeof(Custom);      this.dataGridView1.DataSource = this.source;    }    //添加    private void button1_Click(object sender, EventArgs e)    {      this.source.Add(new Custom(1,"A"));      this.source.Add(new Custom(2,"B"));    }    //刪除    private void button2_Click(object sender, EventArgs e)    {      this.source.RemoveAt(0);    }    //排序 【有問題】    private void button3_Click(object sender, EventArgs e)    {      this.source.Sort = "ID ASC";      this.source.ResetBindings(false);    }    //篩選 【有問題】    private void button4_Click(object sender, EventArgs e)    {      this.source.Filter = "ID = 1";      this.source.ResetBindings(false);    }    //向下移動    private void button5_Click(object sender, EventArgs e)    {      this.source.MoveNext();      MessageBox.Show(this.source.Position.ToString());    }    //向上移動    private void button9_Click(object sender, EventArgs e)    {      this.source.MovePrevious();      MessageBox.Show(this.source.Position.ToString());    }    //獲取當前項    private void button6_Click(object sender, EventArgs e)    {      Custom custom = (Custom)this.source.Current;      MessageBox.Show(" 所處的位置 : " + this.source.IndexOf(custom).ToString());      MessageBox.Show("custom.Name : " + custom.Name);    }    //修改當前項    private void button7_Click(object sender, EventArgs e)    {      Custom custom = (Custom)this.source.Current;      custom.Name = "修改后的值";      this.source.ResetCurrentItem();    }    //刪除當前項    private void button8_Click(object sender, EventArgs e)    {      Custom custom = (Custom)this.source.Current;      this.source.Remove(custom);    }  }  //自定義類 字段必須屬性公開化  public class Custom  {    public Custom()    { }    public Custom(int ID, string Name)    {      this.ID = ID;      this.Name = Name;    }    private int id;    public int ID    {      get { return id; }      set { id = value; }    }    private string name;    public string Name    {      get { return name; }      set { name = value; }    }  }

二、  下面的示例演示如何在兩種不同情況下綁定 DBNull 值。

第一種情況演示如何設置字符串屬性的 NullValue;第二種情況演示如何設置圖像屬性的 NullValue。

下面的示例演示如何在兩種不同情況下綁定 DBNull 值。第一種情況演示如何設置字符串屬性的 NullValue;第二種情況演示如何設置圖像屬性的 NullValue。

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Data.SqlClient;using System.Windows.Forms;namespace DBNullCS{  public class Form1 : Form  {    public Form1()    {          this.Load += new EventHandler(Form1_Load);    }    // The controls and components we need for the form.    private Button button1;    private PictureBox pictureBox1;    private BindingSource bindingSource1;    private TextBox textBox1;    private TextBox textBox2;    // Data table to hold the database data.    DataTable employeeTable = new DataTable();    void Form1_Load(object sender, EventArgs e)    {      // Basic form setup.      this.pictureBox1 = new PictureBox();      this.bindingSource1 = new BindingSource();      this.textBox1 = new TextBox();      this.textBox2 = new TextBox();      this.button1 = new Button();      this.pictureBox1.Location = new System.Drawing.Point(20, 20);      this.pictureBox1.Size = new System.Drawing.Size(174, 179);      this.textBox1.Location = new System.Drawing.Point(25, 215);      this.textBox1.ReadOnly = true;      this.textBox2.Location = new System.Drawing.Point(25, 241);      this.textBox2.ReadOnly = true;      this.button1.Location = new System.Drawing.Point(200, 103);      this.button1.Text = "Move Next";      this.button1.Click += new System.EventHandler(this.button1_Click);      this.ClientSize = new System.Drawing.Size(292, 273);      this.Controls.Add(this.button1);      this.Controls.Add(this.textBox2);      this.Controls.Add(this.textBox1);      this.Controls.Add(this.pictureBox1);      this.ResumeLayout(false);      this.PerformLayout();      // Create the connection string and populate the data table      // with data.      string connectionString = "Integrated Security=SSPI;" +        "Persist Security Info = False;Initial Catalog=Northwind;" +        "Data Source = localhost";      SqlConnection connection = new SqlConnection();      connection.ConnectionString = connectionString;      SqlDataAdapter employeeAdapter =         new SqlDataAdapter(new SqlCommand("Select * from Employees", connection));      connection.Open();      employeeAdapter.Fill(employeeTable);      // Set the DataSource property of the BindingSource to the employee table.      bindingSource1.DataSource = employeeTable;      // Set up the binding to the ReportsTo column.      Binding reportsToBinding = textBox2.DataBindings.Add("Text", bindingSource1,         "ReportsTo", true);      // Set the NullValue property for this binding.      reportsToBinding.NullValue = "No Manager";      // Set up the binding for the PictureBox using the Add method, setting      // the null value in method call.      pictureBox1.DataBindings.Add("Image", bindingSource1, "Photo", true,         DataSourceUpdateMode.Never, new Bitmap(typeof(Button), "Button.bmp"));      // Set up the remaining binding.      textBox1.DataBindings.Add("Text", bindingSource1, "LastName", true);    }    // Move through the data when the button is clicked.    private void button1_Click(object sender, EventArgs e)    {      bindingSource1.MoveNext();    }    [STAThread]    static void Main()    {      Application.EnableVisualStyles();      Application.Run(new Form1());    }  }}

希望本文實例對大家C#程序設計的學習有所幫助!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 普陀区| 大名县| 梁平县| 济阳县| 阳高县| 宾川县| 台州市| 江口县| 宁陕县| 波密县| 特克斯县| 梓潼县| 平远县| 义乌市| 富川| 莎车县| 当雄县| 进贤县| 成安县| 彭州市| 赤城县| 湖南省| 阳高县| 灌南县| 若尔盖县| 长治县| 天祝| 山阴县| 涡阳县| 新宁县| 郧西县| 翁源县| 通山县| 云南省| 色达县| 开化县| 蕉岭县| 临沧市| 太保市| 平阳县| 云南省|