WinForm之BindingSource基礎操作實例教程
阿新 • • 發佈:2017-11-15
back only 參數 ase this reports mil com 使用
WinForm之BindingSource基礎操作實例教程
本文地址: http://www.paobuke.com/develop/c-develop/pbk23599.html
C# yield在WCF中的錯誤使用(二)C#插入法排序算法實例分析C#精確計算年齡的方法分析C#中委托的+=和-=深入研究
通常我們在進行數據綁定的時候,常用的數據源有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#程序設計的學習有所幫助!
除聲明外,跑步客文章均為原創,轉載請以鏈接形式標明本文地址WinForm之BindingSource基礎操作實例教程
本文地址: http://www.paobuke.com/develop/c-develop/pbk23599.html
相關內容
c#讀取XML多級子節點C#向線程中傳遞多個參數的解決方法(兩種)C#中前臺線程和後臺線程的區別與聯系C#畫筆Pen繪制光滑模式曲線的方法C# yield在WCF中的錯誤使用(二)C#插入法排序算法實例分析C#精確計算年齡的方法分析C#中委托的+=和-=深入研究
WinForm之BindingSource基礎操作實例教程