WinForm中datagrid更新

mikebai 2006-02-04 11:54:52
datagrid中的数据来自数据库中的一个表。让数据显示在DG中,有一列的数据要放在comboBox中,并且将这个comboBox邦定到数据库的列一个表中字段。

可以对DG进行修改,添加,删除,操作,点击确定更新按钮数据库

~~
PS:net2003,winform

希望大家帮忙啊。
谢谢~!
...全文
303 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mikebai 2006-03-03
  • 打赏
  • 举报
回复
对,就是楼上的
n688com 2006-03-03
  • 打赏
  • 举报
回复
SqlCommandBuilder cBuilder;
cBuilder=new SqlCommandBuilder(ad);
ad.InsertCommand = cBuilder.GetInsertCommand();
ad.DeleteCommand = cBuilder.GetDeleteCommand();
ad.UpdateCommand = cBuilder.GetUpdateCommand();
mikebai 2006-03-03
  • 打赏
  • 举报
回复
艾,用事务解决了。谢谢大家的帮忙!
dek 2006-02-04
  • 打赏
  • 举报
回复
public Form1()
{
InitializeComponent();
}
DataSet ds;
OleDbDataAdapter myada;
OleDbCommand mycom;
OleDbConnection mycon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\db1.mdb");

void Data_Load() //窗体Load事件
{
string sqlcx = "select id,meterno as 卡号,username as 名称,address as 电表序号,metertype as 电表类型,pricecode as 用电类别,applydate as 开户时间,run as 状态,operator as 操作员 from yhzl";
mycom = new OleDbCommand(sqlcx, mycon);
myada = new OleDbDataAdapter();
OleDbCommandBuilder mycombu = new OleDbCommandBuilder(myada);//重要,否则就慢慢写updatecommand,deletecommand...
myada.SelectCommand = mycom;
ds = new DataSet();
myada.Fill(ds);
bindingSource1.DataSource = ds.Tables[0];
dataGridView1.DataSource = bindingSource1;
bindingNavigator1.BindingSource = bindingSource1;
for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
{ this.ComboBox1.Items.Add(ds.Tables[0].Columns[i].ToString());}// ComboBox1绑定表的列,绑定字段用Row
mycon.Close();
}
private void Button_Click(object sender, EventArgs e) //更新按钮代码
{
try { myada.Update(ds); }
catch { MessageBox.Show("没有连接到数据库"); }
}
学C#时间不是很长,我能想到的也就有这样了,另外我用的是vs2005,已经没有DataGrid了,不过View,Grid都一样,都可以增,删,改,关键的是DataSet, :)
kjq_vb 2006-02-04
  • 打赏
  • 举报
回复
如果是批量更新的用sqlcommandbuilder
大个啊 2006-02-04
  • 打赏
  • 举报
回复
点击确定在按钮的click事件下写代码更新,关键是获取主键
mikebai 2006-02-04
  • 打赏
  • 举报
回复
谢谢楼上的,我去试试。最后一起算分~~
qiujb 2006-02-04
  • 打赏
  • 举报
回复
其实这个问题并不难,用DataSet的HasChange()和GetChange()可以搞定,楼主可以这样写
if(ds.HasChange()== true)
{
//一个跟数据库存保存的方法返回一个DataSet例如下面的方法
//把GetChange()给它就行了
}

public DataSet UpdateDataBase(DataSet changedDataSet,string tableName)
{
this.myConnection = new SqlConnection(connectionString);
this.da = new SqlDataAdapter(UpdateSQL,myConnection);
this.sqlCmdBld = new SqlCommandBuilder(da);
this.da.Update(changedDataSet,tableName);
return changedDataSet;//返回更新了的数据库表
}

可以实现批量更新,至于ComboBox也不是很难的问题。
mikebai 2006-02-04
  • 打赏
  • 举报
回复
谢谢楼上的。这些我都看过了,可看不大懂,真的有那么麻烦吗?
marvelstack 2006-02-04
  • 打赏
  • 举报
回复
绑定
http://blog.csdn.net/zhzuo/archive/2004/08/06/67016.aspx
更新,
http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx
切入ComboBox,
http://blog.csdn.net/zhzuo/archive/2004/05/31/22036.aspx
更多的操作,
http://www.syncfusion.com/FAQ/WindowsForms/FAQ_c44c.aspx
,
如果是vs.net 2005,建议使用DataGridView,直接支持双重绑定,
http://www.microsoft.com/china/msdn/library/langtool/vsdotnet/vs05a9.mspx
看“使用列表列约束选择”那一节
mikebai 2006-02-04
  • 打赏
  • 举报
回复
刚才吃饭去了,刚看见大家的回复。谢谢了。有没有谁在VS2003下的实例给我发个阿。谢谢!

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧