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

dataGridView1数据填充问题,谢谢解答
private void frmCustomers_Load(object sender, EventArgs e)
  {  
   
DataTable dt = OLEDBClass.RunSqlGetDataTable("select * from data_customers where pkid=-1 order by pkid");

  foreach (DataGridViewColumn col in this.dataGridView1.Columns) //dataGridView1的NAME和数据库NAME是一致的
  {
  string colname = col.Name.ToString();
  dataGridView1.Columns[colname].DataPropertyName = colname;
  }

  dataGridView1.AutoGenerateColumns = false;

  //设置初始值
  dt.Columns["discount"].DefaultValue ="0.7";
  dt.Columns["purchasetimes"].DefaultValue ="0";
  dt.Columns["purchaseamount"].DefaultValue = "0";
  //END

  bscustomers.DataSource = dt;
  dataGridView1.DataSource = bscustomers;
}




 private void buttonSearch_Click(object sender, EventArgs e) //查找
  {
  string Sqlstr"select * from data_customers order by pkid""
 OleDbDataAdapter oleda = new OleDbDataAdapter(Sqlstr, GetConn());
  ((DataTable)bscustomers.DataSource).Clear();
  oleda.Fill((DataTable)bscustomers.DataSource);
}


我一般是通过上述代码,把查找内容直接FILL进dataGridView1所绑定的TABLE的.
另外一种方法是直接查询后把DATATABLE直接赋予dataGridView1.DataSource,但是这样做,
之前定义的DefaultValue值必须重新赋值,但是如果使用FILL的话,
就不用,我估计FILL是直接填充数据,不更改DATATABLE的初始化。现在问题是,我是使用WEBSERVICE返回一个DATATABLE,
这样的话,我就不能直接使用FILL,现在问题是不用FILL的话,如何把返回的DATATABLE填充到已经绑定的dataGridView1上面
当然我可以这样赋值:dataGridView1.DataSource=dt;但是这样的话,DefaultValue就必须重新赋值一次,有没有其他办法,
帮忙解答,谢谢

------解决方案--------------------
或者WEBSERVICE返回dataset后,你自己写个fill方法,把WEBSERVICE返回的datatable中的row复制到原来的datatable上,