学习datagridview时想实现如下的功能,在combox选择一个数据项,datagridview根据此项筛选相关项,但在combox通过数据绑定方式读取数据时,datagridwiew不能进行筛选。
public partial class Form2 : Form
{
SqlConnection conn;
DataSet ds;
public Form2()
{
InitializeComponent();
} private void Form2_Load(object sender, EventArgs e)
{
conn = new SqlConnection("server=(local);database=aaa;uid=sa;pwd=");
SqlDataAdapter da = new SqlDataAdapter("select name from ss", conn);
ds = new DataSet("myDs");
da.Fill(ds, "ss");
comboBox1.DisplayMember = "name";
comboBox1.DataSource = ds.Tables["ss"].DefaultView;
bind(); }
private void bind() {
SqlDataAdapter sda = new SqlDataAdapter("select * from t_bloodinput where doc_1='" + comboBox1.Text + "'",conn);
sda.Fill(ds,"t_bloodinput");
dataGridView1.DataSource = ds.Tables["t_bloodinput"].DefaultView;
} private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
bind();
}
而用items.add(datareader)一条条添加时没此问题,请问是何原因!
public partial class Form2 : Form
{
SqlConnection conn;
DataSet ds;
public Form2()
{
InitializeComponent();
} private void Form2_Load(object sender, EventArgs e)
{
conn = new SqlConnection("server=(local);database=aaa;uid=sa;pwd=");
SqlDataAdapter da = new SqlDataAdapter("select name from ss", conn);
ds = new DataSet("myDs");
da.Fill(ds, "ss");
comboBox1.DisplayMember = "name";
comboBox1.DataSource = ds.Tables["ss"].DefaultView;
bind(); }
private void bind() {
SqlDataAdapter sda = new SqlDataAdapter("select * from t_bloodinput where doc_1='" + comboBox1.Text + "'",conn);
sda.Fill(ds,"t_bloodinput");
dataGridView1.DataSource = ds.Tables["t_bloodinput"].DefaultView;
} private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
bind();
}
而用items.add(datareader)一条条添加时没此问题,请问是何原因!
想着你的原因是不是load里返回的以table形式数据集给combobox,而不是列里面的值呢,只是提供点想法,我也不是高手。
comboBox1.DataSource = ds.Tables["ss"];
这样行不行
load时能显示出需要的值,但每次的comboBox1_SelectedIndexChanged事件都是叠加显示,即原有的值都在,再加上现在筛选出的值。
comboBox1_SelectedIndexChanged,我通过textBox获取comboBox1的text值是我所需要的值,同时 SqlDataAdapter sda = new SqlDataAdapter("select * from t_bloodinput where doc_1='" + comboBox1.Text + "'",conn);中的sql语句也是需要的语句,都没问题,就是datagridview的显示结果是叠加的。请继续关注!
dt.Rows.Clear();
dataGridView1.DataSource = dt; dataGridView1.DataSource = null;