时间:2021-05-20
通常我们在进行数据绑定的时候,常用的数据源有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#程序设计的学习有所帮助!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例展示了WinForm实现基于BindingSource的方法扩展,共享给大家供大家参考。具体方法如下:关键代码如下:usingSystem;usingS
此实例教程另外适用【关注店铺】、【抽奖活动】、作用推广方法,主页照片可提交自身的照片。下列实例教程为共享砍价活动推广到移动端店铺首页实例:「实际效果浏览」「操作
淘宝神笔是店面装修,产品介绍的关键专用工具。那麼,商家怎样用淘宝神笔给手机上宝贝详情加个连接呢?下边大家讨论一下实际的实际操作实例教程吧。【实际操作实例教程】1
快捷入口:挪动旺店电脑版本实际操作实例教程挪动旺店千牛卖家手机安卓版实际操作实例教程如今挪动旺店分电脑版网页及电脑上千牛卖家版,手机千牛版,若想在电脑上千牛卖家
有关淘宝网(电商运营网)店面装修实例教程,我想说的是的是那样的实例教程如今在网络上能够搜到许多,针对初学者来讲根据一些技术专业的实例教程来学习淘宝店面装修是