C#新手,关于bindingnavigator中添加一个SaveButton保存的问题?

seamone 2009-01-13 02:50:05
我用的VS2008,在winform中,拖入控件datagridview1,bindingnavigator1,并在bindingnavigator中设置了一个textbox1和一个button1,

代码如下,已经可以实现在textbox1中搜索并把结果在dataGridView1中显示:
private void button1_Click(object sender, EventArgs e)
{
//String ConnectionString = global::LogisticsInfoSys.Properties.Settings.Default.ConnectionString;
//SqlConnection MyConnection = new SqlConnection(conn);

SqlConnection conn = BaseClass.DBConn.MainConn();
conn.Open();
string MySQL = "Select * From tb_Master Where iCarOrder LIKE '" + this.textbox1.Text + "'";
DataTable MyMsaterTable = new DataTable();
SqlDataAdapter tb_MasterTableAdapter = new SqlDataAdapter(MySQL, conn);
tb_MasterTableAdapter.Fill(MyMsaterTable);
this.dataGridView1.DataSource = MyMsaterTable;
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}


问题是,我想在bindingnavigator中又添加一个SaveButton,想实现datagridview中直接修改数据后保存,在MSDN官方上的解决答案是如下代码:

private void SaveButton_Click(System.Object sender,
System.EventArgs e)
{
TableAdapterName.Update(DataSetName.TableName);
}

如它的格式我试了N次,我几天都搞不定,请能帮助我。谢谢!!
...全文
727 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoma870317 2010-03-11
  • 打赏
  • 举报
回复
好,我来看看好,我来看看好,我来看看好,我来看看好,我来看看
seamone 2009-01-14
  • 打赏
  • 举报
回复
如这个格式,我写了几个都错误,应该怎样写呀?请求大家帮助点解呀。
private void SaveButton_Click(System.Object sender,
System.EventArgs e)
{
TableAdapterName.Update(DataSetName.TableName);
}
EveryCase 2009-01-14
  • 打赏
  • 举报
回复
ding
seamone 2009-01-14
  • 打赏
  • 举报
回复
OK,已经可以保存了。
谢谢:xinshoushanglua的代码,还有GTX280的提醒,
原来是需要this.validate ,呵呵,现在结贴。
seamone 2009-01-14
  • 打赏
  • 举报
回复
To GTX280,谢谢,您的方法仍然不行,唉我现在好郁闷。。。。。
GTX280 2009-01-14
  • 打赏
  • 举报
回复

private void btnUpdate_Click(object sender, EventArgs e)
{
bs.EndEdit();//试试
sda.Update((DataTable)bs.DataSource); /////写回数据库
}
seamone 2009-01-14
  • 打赏
  • 举报
回复
To:xinshoushanglua,谢谢您的回复,我把您的代码放在我的程序里,数据绑定与加载都已成功应用,可以搜索出数据,但是您的这个更新还是不能更新,

private void btnUpdate_Click(object sender, EventArgs e)
{
sda.Update((DataTable)bs.DataSource); /////写回数据库
}


我是直接在datagridview1里直接编辑的里面搜索出的数据,修改后点的btnUpdate保存,然后再搜索同个数据出来看到数据还是没有变化。这个sda.Update((DataTable)bs.DataSource);需要怎么用?
jacklee_008 2009-01-14
  • 打赏
  • 举报
回复
2. 绑定的datagridview,在添加了新的数据后,如果想重新写回数据库,保持数据库的同步,一下方法即可:
核心就是SqlDataAdapter+SqlCommandBuilder+BindingSource...

写了个简单的例子,测试通过:

两个按钮,一个 "加载 ",一个 "更新 ",还有一个 "DataGridView "

using System.Data;
using System.Data.SqlClient;

namespace DataGridViewUpdateToDataBase
{
public partial class Form1 : Form
{
private SqlDataAdapter sda = new SqlDataAdapter();
private BindingSource bs = new BindingSource();
public Form1()
{
InitializeComponent();
}

//加载
private void btnLoad_Click(object sender, EventArgs e)
{
DataBind();
}

//数据绑定
private void DataBind()
{
SqlConnection con = new SqlConnection( "server=.;database=student;uid=sa; pwd=0421 ");
sda = new SqlDataAdapter( "select * from studentDetails ", con);
SqlCommandBuilder buider = new SqlCommandBuilder(sda);
DataSet ds = new DataSet();
sda.Fill(ds, "student ");
bs .DataSource =ds.Tables [ "student "];
this.dataGridView1.DataSource = bs;
}

//更新
private void btnUpdate_Click(object sender, EventArgs e)
{
sda.Update((DataTable)bs.DataSource); /////写回数据库
}
}
}
注意:写回数据库时,写入的项要与select时的项一样,如果试图写入查询中没有的项,那么此项的值将为空;
笺香 2009-01-14
  • 打赏
  • 举报
回复
关注吧。希望楼主能等到答案。
seamone 2009-01-14
  • 打赏
  • 举报
回复
谢谢owenliangbin大哥,我根据您的提示在查查,如果有朋友知道,请在这里留言。感谢各位了。
owenliangbin 2009-01-14
  • 打赏
  • 举报
回复
应该是 SqlCommandBuilder 吧,没记错的话
owenliangbin 2009-01-14
  • 打赏
  • 举报
回复
建议看看ado.net的操作。的确是上面的操作就可以,不过,先要实现些东西。具体我忘了,很久没有用了
seamone 2009-01-13
  • 打赏
  • 举报
回复
请在座各位大哥大姐能帮助我,小弟感激涕零。

111,039

社区成员

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

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

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