首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

winform里datagridview清除内容解决方法

2012-04-18 
winform里datagridview清除内容我用SqlDataAdapter读出的数据,每次返回10行,显示在datagridview里当第二次

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,"表名"); 

热点排行