我在窗体中用datagridview来显示数据库中的数据,现在我用OleDbCommandBuilder来自动生成SQL命令,用OleDbDataAdapter.Update进行更新,现在可以实现对数据表的更新和添加,但是问题是有一个字段AA不在datagridview中显示出来但又要添加他的值到数据库中,可是自动生成的SelectCommand中没有AA这个字段,因此添加后不显示的那个字段总是默认为0,其他字段都能正常添加。我想在更新的同时赋予那个字段一个值,请问该怎么做呢?
调试欢乐多
自动生成的是UpdateCommand~
你把你的部分绑定代码贴出来看看
str1 = @"select time AS 时间,kind AS 总类,cause AS 原因,underwrite AS 签名 from siren_history where equip_id =" + id + "";
OleDbDataAdapter da1 = new OleDbDataAdapter(str1, Olecon);
DataTable dt1 = new DataTable();
da1.Fill(dt1);
this.dataGridViewHisRecord.DataSource = dt1;
这是点击按钮更新数据的代码:private DataTable DT1 = new DataTable();
private OleDbDataAdapter DA1 = new OleDbDataAdapter();
OleDbCommand dc1 = new OleDbCommand(str1, olecon);
DA1.SelectCommand = dc1;
DA1.Fill(DT1);
dataGridViewHisRecord.DataSource = DT1;private void bt_dgv1_Click(object sender, EventArgs e)
{
try
{
OleDbCommandBuilder dcb = new OleDbCommandBuilder(DA1);
dcb.QuotePrefix = "[";
dcb.QuoteSuffix = "]";
DA1.Update(DT1);
MessageBox.Show("更新成功!");
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString());
return;
}
}
SQL语句应该把equip_id读到dataTable里
你再把equip_id那一列在datagridview里visable = false;就行~
CommandBuilder自动生成更新语句的前提是必须要有主键
如果把equip_id那一列在datagridview里visable = false,在datagridview中直接添加一行数据时equip_id这个字段的值就不能直接添加了,就默认为空了。可在datagridview中显示数据时的SQL语句还要用“where equip_id=aa ”,那么这条刚添加的数据就无法显示了,因为为空啊。能不能在用OleDbDataAdapter.Update(datatable)为其他字段添加值的时候把equip_id这个字段的值,定为一个值呢?
在equip_id那一列自动显示出来,这样就不用用户去输了~
领导是不是都很恐怖呀?呵呵~