更新时间:2023-12-04 09:56:58
以下是使用Northwind数据库的示例
Here is a sample that uses the Northwind database
using System; using System.Collections.Generic; using System.Compone ntModel; 使用 System.Data; 使用 System.Data.SqlClient; 使用 System.Drawing; using System.Text; using System.Windows.Forms; namespace CSFilterDGVCombo { public partial class Form1:Form { public Form1() { InitializeComponent(); DataSet ds; private void Form1_Load( object sender,EventArgs e) { String strConn =" Server =。 \\sqlexpress; Database = NorthWind; Integrated Security = SSPI;" ;; SqlDataAdapter daProducts; SqlDataAdapter da; SqlConnection conn; conn = new SqlConnection(strConn); daProducts = new SqlDataAdapter (" Select * From Products",conn); da = new SqlDataAdapter(" Select * from Categories",conn); ds = new DataSet(); daProducts.Fill(ds," Products"); da.Fill(ds," Category"); DataTable dt = new DataTable(); dt.Columns.Add(" Category", typeof ( int ) ); dt.Columns.Add(" Products"); dataGridView1.AutoGenerateColumns = false ; dataGridView1.DataSource = dt; DataGridViewComboBoxColumn colCategory = new DataGridViewComboBoxColumn(); colCategory.Width = 100; colCategory.DataPropertyName =" Category" ;; colCategory.DataSource = ds.Tables [" Category"]; colCategory.DisplayMember =" CategoryName" ;; colCategory.ValueMember =" CategoryID" ;; colCategory.HeaderText ="类别"; dataGridView1.Columns.Add(colCategory); DataGridViewComboBoxColumn dgvFilter = new DataGridViewComboBoxColumn(); dgvFilter.Width = 150; dgvFilter。 DataSource = ds.Tables [" Products"]。DefaultView; dgvFilter.Display Member =" ProductName" ;; dgvFilter.HeaderText =" Product" ;; dgvFilter.DataPropertyName =" Product" ;; dataGridView1.Columns.Add(dgvFilter); } private void dataGridView1_DataError( object sender,DataGridViewDataErrorEventArgs e) { e.Cancel = true ; } private void dataGridView1_CellBeginEdit( object sender,DataGridViewCellCancelEventArgs e) { if (e.ColumnIndex == 1) { DataGridViewComboBoxCell dgvCbo = dataGridView1 [e。 ColumnIndex,e.RowIndex] as DataGridViewComboBoxCell; if (dgvCbo!= null ) { String str = dataGridView1 [ 0,dataGridView1.CurrentRow.Index] .Value.ToString(); DataView dv = new DataView(ds.Tables [" Products"]); dv。 RowFilter =" CategoryID =" + str; dgvCbo.DataSource = dv; } private void dataGridView1_CellEndEdit ( object sender,DataGridViewCellEventArgs e) { if (e.ColumnIndex == 2) { DataGridViewComboBoxCell dgvCbo = dataGridView1 [e.ColumnIndex,e.RowIndex] as DataGridViewComboBoxCell; if (dgvCbo!= null ) { DataView dv = new DataView(ds.Tables [" Products"]); dgvCbo.DataSource = dv; } |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Text; using System.Windows.Forms; namespace CSFilterDGVCombo { public partial class Form1 : Form { public Form1() { InitializeComponent(); } DataSet ds; private void Form1_Load(object sender, EventArgs e) { String strConn = "Server = .\\sqlexpress;Database = NorthWind;Integrated Security = SSPI;"; SqlDataAdapter daProducts; SqlDataAdapter da; SqlConnection conn; conn = new SqlConnection(strConn); daProducts = new SqlDataAdapter("Select * From Products", conn); da = new SqlDataAdapter("Select * from Categories", conn); ds = new DataSet(); daProducts.Fill(ds, "Products"); da.Fill(ds, "Category"); DataTable dt = new DataTable(); dt.Columns.Add("Category", typeof(int)); dt.Columns.Add("Products"); dataGridView1.AutoGenerateColumns = false; dataGridView1.DataSource = dt; DataGridViewComboBoxColumn colCategory = new DataGridViewComboBoxColumn(); colCategory.Width = 100; colCategory.DataPropertyName = "Category"; colCategory.DataSource = ds.Tables["Category"]; colCategory.DisplayMember = "CategoryName"; colCategory.ValueMember = "CategoryID"; colCategory.HeaderText = "Category"; dataGridView1.Columns.Add(colCategory); DataGridViewComboBoxColumn dgvFilter = new DataGridViewComboBoxColumn(); dgvFilter.Width = 150; dgvFilter.DataSource = ds.Tables["Products"].DefaultView; dgvFilter.DisplayMember = "ProductName"; dgvFilter.HeaderText = "Product"; dgvFilter.DataPropertyName = "Product"; dataGridView1.Columns.Add(dgvFilter); } private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e) { e.Cancel = true; } private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) { if (e.ColumnIndex == 1) { DataGridViewComboBoxCell dgvCbo = dataGridView1[e.ColumnIndex, e.RowIndex] as DataGridViewComboBoxCell; if (dgvCbo != null) { String str = dataGridView1[0, dataGridView1.CurrentRow.Index].Value.ToString(); DataView dv = new DataView(ds.Tables["Products"]); dv.RowFilter = "CategoryID = " + str; dgvCbo.DataSource = dv; } } } private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex == 2) { DataGridViewComboBoxCell dgvCbo = dataGridView1[e.ColumnIndex, e.RowIndex] as DataGridViewComboBoxCell; if (dgvCbo != null) { DataView dv = new DataView(ds.Tables["Products"]); dgvCbo.DataSource = dv; } } } } } |