private void btnSearch_Click(object sender, EventArgs e)
{
if (validateInput())
{
string sql=string.Format("select c.invCode,i.cInvName,i.cInvStd,i.cComUnitName,c.BaseQtyN,c.BaseQtyD,i.cDefWareHouse,i.cWhName,i.cInvCname,c.loc,i.iInvNcost from bom_child as c inner join Inventorys as i on c.invCode=i.cInvCode where bomid=(select bomid from bom_parents where invCode='{0}' and version='{1}')",txtParentCode.Text,cboBomVersion.Text);
try
{
dataAdapter = new SqlDataAdapter(sql, DBHelp.connection); dataAdapter.Fill(dataSet, "child"); dgvChild.DataSource = dataSet.Tables["child"];
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
DBHelp.connection.Close();
}
}
}代码如上图所示第一次点击按钮是正确的,但是第二次点击按钮,在dgvChild(datagridview)控件中,会把两次的结果都显示出来。我猜测是应该是 dataset.table 和 datagridview里的行没有清空吧,这个要怎么处理呢?
我在
dgvChild.DataSource = dataSet.Tables["child"];
后面加了一条
dataSet.Tables["child"].Clear();但是这样,数据根本就不显示了。
思路对了,但是不应该清空DataSet,应该清空datagridview的数据源
试试
datagridview.DataSource=null;
dgvChild.DataSource = dataSet.Tables["child"];如果不行就
datagridview.Rows.Clear();
dgvChild.DataSource = dataSet.Tables["child"];
就好了!
datagridview.DataSource=null;
dgvChild.DataSource = dataSet.Tables["child"];
Or
datagridview.Rows.Clear();
dgvChild.DataSource = dataSet.Tables["child"];