读书人

数据邦定有关问题(winFrom中用空数据

发布时间: 2012-01-15 22:57:48 作者: rapoo

数据邦定问题(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>
/// 绑—ataSet
/// </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指定源

读书人网 >C#

热点推荐