日期:2014-05-18  浏览次数:20864 次

winform里datagridview清除内容
我用SqlDataAdapter读出的数据,每次返回10行,显示在datagridview里 
当第二次返回数据显示的时候,第一次的数据还是有,我怎么可以清除datagridview里的内容那,试了dataGridView1.Columns.Clear();,这样所有得就没了,我还想保留我的标题。

------解决方案--------------------
不对啊,你直接使用新的数据源到DataSource不就可以了吗?

你的DataSet是不是每次使用的同一个呢?你需要New的。
------解决方案--------------------
如果你是SqlDataAdapter的话,就用绑定的方式来清除数据源就行了。例如:

方法一:在处理事件中定义一个私有的DataSet,每次Fill的时候就不会显示原来的数据了

//显示数据
private void btnSearch_Click(object sender, EventArgs e)
{
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
da.Fill(ds);
if (ds!= null)
{
DataGridView1.DataSource=ds.Tables[0];
ShowTitle(DataGridView1);
}
}

//在DataGridView中显示标题
private void ShowTitle(DataGridView dgv)
{
dgv.Columns[0].HeaderText = "ID号";
dgv.Columns[1].HeaderText = "名称";
dgv.Columns[2].HeaderText = "其他";
......根据具体情况显示列名
}

方法二:利用公有的DataSet来清除相关内容

在窗体部分定义一个公共变量
private DataSet ds = null;

//显示数据
private void btnSearch_Click(object sender, EventArgs e)
{
//在每次查找或填充数据前判断ds是否为null
if (ds ! = null)
{
if (ds.Tables.Count > 0)
{
ds.Tables[0].Rows.Clear();
ds.Tables[0].AcceptChanges();
}
}
else
{
ds = new DataSet();
}
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
da.Fill(ds);
if (ds != null)
{
DataGridView1.DataSource=ds.Tables[0];
ShowTitle(DataGridView1);
}
}


------解决方案--------------------
感觉上应该是DataSet的问题 
操作这类对象的时候 在事件前一般Clear() 或者 Reset()下
------解决方案--------------------
C# code

//清空表里原有的数据
dataSet.Tables["表名"].Clear();
//重新指定dataadapter对象的查询语句
dataAdapter.SelectCommand.CommandText=sql;
//重新填充
dataAdapter.Fill(dataSet,"表名");