数据邦定问题(winFrom中用空数据DataSet邦定到dataGridView控件上)
//用空数据DataSet邦定到dataGridView控件上
pirvate DataSet ds;
private void button1_Click(object sender, EventArgs e)
{
ds= new DataSet();
dataGridView1.DataSource = ds.Tables[ "Company "];
}
//在用个方法返回一个带数据的结构和ds一样的DataSet
private void button2_Click(object sender, EventArgs e)
{
ds = GetNewData();
}
private DataSet GetNewData()
{
//这里返回一个有数据的DataSet
}
问题:为什么在单击按钮button2的时候数据填充不上去(ds中有数据)
怎么才能把数据显示出来
现在能把数据显示出来有一个办法:ds.Merge(GetNewData())
不用Merge方法还有其他的办法能将数据显示出来
[解决办法]
you click button2 then ds have data
but you didn 't click button1
so dataGridView1 'data not change
[解决办法]
notice :
ds= new DataSet();
dataGridView1.DataSource = ds.Tables[ "Company "];
change to:
ds= GetNewData();
dataGridView1.DataSource = ds.Tables[ "Company "];
[解决办法]
private void button2_Click(object sender, EventArgs e)
{
ds = GetNewData();
}
private DataSet GetNewData()
{
//这里返回一个有数据的DataSet
}
------>
private void button2_Click(object sender, EventArgs e)
{
GetNewData(ref ds);
}
private void GetNewData(ref ds)
{
//给ds的表赋值.
}
*****************************************************************************
有空 来坐坐.我的Blog
http://blog.csdn.net/hertcloud/
[解决办法]
/// <summary>
/// 绑定DataSet
/// </summary>
/// <param name= "sql "> sql语句 </param>
/// <returns> DataSet </returns>
public static DataSet DBbind(string sql)
{
SqlConnection tmpcon = Connection(address, database, datausername, datapassword);
DataSet ds = new DataSet();
SqlDataAdapter adp = new SqlDataAdapter(sql, tmpcon);
adp.Fill(ds);
tmpcon.Close();
return ds;
}
[解决办法]
button1实际上没有什么作用嘛
[解决办法]
问题:为什么在单击按钮button2的时候数据填充不上去(ds中有数据)
怎么才能把数据显示出来
现在能把数据显示出来有一个办法:ds.Merge(GetNewData())
不用Merge方法还有其他的办法能将数据显示出来
=================================================
给你分析一下你的代码以及问题:
pirvate DataSet ds;
private void button1_Click(object sender, EventArgs e)
{
ds= new DataSet();//示例化一个空的DataSet没有错。
dataGridView1.DataSource = ds.Tables[ "Company "];//这里就是你的不对了,这里有Company表吗?没有看到你添加表的语句,比如:ds.Tables.Add(new DataTable( "Company "));
//
}
//在用个方法返回一个带数据的结构和ds一样的DataSet
private void button2_Click(object sender, EventArgs e)
{
ds = GetNewData();//通过这个方法,只是把ds对象指向新的一个通过GetNewData()返回的DataSet,这样就不是你前面dataGridView1绑定的那个 ds了。
}
private DataSet GetNewData()
{
//这里返回一个有数据的DataSet
}
通过以上分析,楼主应该清楚了ds.Merge(GetNewData())为什么会显示数据到dataGridView1,应该这样,ds还是绑定到dataGridView1,只是把GetNewData()返回的新的DataSet数据合并到了ds中。
想不通过ds.Merge(GetNewData())来显示数据其实也很简单,只要通过DataAdapter.Fill(ds)。填充数据到ds就行了,如果有数据填充进去,自然的就会有数据显示到dataGridView1。不过看楼主需要对代码调整一下。
总结楼主的问题:
1。对ado.net技术可能还需进一步掌握。
2。值类型和引用类型还需要很好的区分(如果学过C语言,应该不会出现这种错误,不过这也是一些朋友经常碰到的错误)。
[解决办法]
ds= new DataSet();
dataGridView1.DataSource = ds.Tables[ "Company "];//
dataGridView1.DataBind();
[解决办法]
pirvate DataSet ds;
private void button1_Click(object sender, EventArgs e)
{
ds= new DataSet();
dataGridView1.DataSource = ds.Tables[ "Company "];
}
private void button2_Click(object sender, EventArgs e)
{
ds = GetNewData();
}
[解决办法]
ds= new DataSet();这句代码移除...
首先点击button2,然后再点击button1,数据就显示出来了...
[解决办法]
你點buttion2時,只是調用一個方法得到一個數據集,但是沒有在dataGridView1中綁定,所以只有你擊點button2得到一個數據集然後再去點擊button1,使之dataGridView1指定數據源