private OleDbConnection connection = null;
private OleDbCommand selectCommand = null;
private OleDbDataAdapter dataAdapter = null;connection = new OleDbConnection(connectionString);
selectCommand = connection.CreateCommand();
string sql_xfxm_bdgv = "select * from xfxmb ";
selectCommand.CommandText = sql_xfxm_bdgv;
dataAdapter = new OleDbDataAdapter();
dataAdapter.SelectCommand = selectCommand;
DataTable data = new DataTable();
dataAdapter.Fill(data);
this.GridView_XFXM.DataSource = data;OleDbCommandBuilder builder = new OleDbCommandBuilder(dataAdapter);
dataAdapter.UpdateCommand = builder.GetUpdateCommand();
dataAdapter.InsertCommand = builder.GetInsertCommand();
dataAdapter.DeleteCommand = builder.GetDeleteCommand();
this.GridView_XFXM.Columns[0].HeaderCell.Value = "序号";
this.GridView_XFXM.Columns[1].HeaderCell.Value = "推荐日期";
this.GridView_XFXM.Columns[2].HeaderCell.Value = "消费名称";
this.GridView_XFXM.Columns[2].Width = 230;
this.GridView_XFXM.Columns[3].HeaderCell.Value = "金额";
this.GridView_XFXM.Columns[4].HeaderCell.Value = "操作员";
删除
if(MessageBox.Show("确定要保存所做的修改吗?","系统提示!",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogResult.OK)
{
DataTable data = (DataTable)this.GridView_XFXM.DataSource;
DataTable changedData =data.GetChanges(); if(changedData!=null)
{
dataAdapter.Update(changedData);
data.AcceptChanges();
//释放资源
}
}问题一:能不能把这个方法进行封装,也就是传入参数(DataGridView dgv,Procedure pro,Sqlparameter[] paras)
初始化类,那么就可以获得实例,去执行DataSource=data的数据源绑定和数据的修改工作。
因为不是一个DataGridView使用这个功能,很多页面要用,不能都写在.cs文件中吧?问题二:可不可以为DataGridView先绑定一个数据源DataTable,然后再用一个SqlDataAdapter把更新过的数据源传回服务器。注意这里的DataTable是在BLL中返回的,而非这个“SqlDataAdapter”生成的,也就是说“SqlDataAdapter”还没有关联到数据库,请问这个功能可以实现吗?怎样实现???
private OleDbCommand selectCommand = null;
private OleDbDataAdapter dataAdapter = null;connection = new OleDbConnection(connectionString);
selectCommand = connection.CreateCommand();
string sql_xfxm_bdgv = "select * from xfxmb ";
selectCommand.CommandText = sql_xfxm_bdgv;
dataAdapter = new OleDbDataAdapter();
dataAdapter.SelectCommand = selectCommand;
DataTable data = new DataTable();
dataAdapter.Fill(data);
this.GridView_XFXM.DataSource = data;OleDbCommandBuilder builder = new OleDbCommandBuilder(dataAdapter);
dataAdapter.UpdateCommand = builder.GetUpdateCommand();
dataAdapter.InsertCommand = builder.GetInsertCommand();
dataAdapter.DeleteCommand = builder.GetDeleteCommand();
this.GridView_XFXM.Columns[0].HeaderCell.Value = "序号";
this.GridView_XFXM.Columns[1].HeaderCell.Value = "推荐日期";
this.GridView_XFXM.Columns[2].HeaderCell.Value = "消费名称";
this.GridView_XFXM.Columns[2].Width = 230;
this.GridView_XFXM.Columns[3].HeaderCell.Value = "金额";
this.GridView_XFXM.Columns[4].HeaderCell.Value = "操作员";
删除
if(MessageBox.Show("确定要保存所做的修改吗?","系统提示!",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogResult.OK)
{
DataTable data = (DataTable)this.GridView_XFXM.DataSource;
DataTable changedData =data.GetChanges(); if(changedData!=null)
{
dataAdapter.Update(changedData);
data.AcceptChanges();
//释放资源
}
}问题一:能不能把这个方法进行封装,也就是传入参数(DataGridView dgv,Procedure pro,Sqlparameter[] paras)
初始化类,那么就可以获得实例,去执行DataSource=data的数据源绑定和数据的修改工作。
因为不是一个DataGridView使用这个功能,很多页面要用,不能都写在.cs文件中吧?问题二:可不可以为DataGridView先绑定一个数据源DataTable,然后再用一个SqlDataAdapter把更新过的数据源传回服务器。注意这里的DataTable是在BLL中返回的,而非这个“SqlDataAdapter”生成的,也就是说“SqlDataAdapter”还没有关联到数据库,请问这个功能可以实现吗?怎样实现???
楼主可以参考下ms的SqlHelper来写数据访问层。
dataAdapter.UpdateCommand = builder.GetUpdateCommand();
dataAdapter.InsertCommand = builder.GetInsertCommand();
dataAdapter.DeleteCommand = builder.GetDeleteCommand();
因为全部使用的是存储过程,DataTable只是一个返回的查询记录集啊。你的意思是不是通过判断DataGridView中那几行做了改变,然后只是对信息改变的行的信息进行更新就可以了啊
dataAdapter.SelectCommand = selectCommand;
DataTable data = new DataTable();
dataAdapter.Fill(data);
这样不行吧,需要有个 sqlcommandbuider 吧
{
SqlConnection con = new SqlConnection () ;
con.Open();
SqlDataAdapter sda = new SqlDataAdapter(sql, con);
DataSet ds = new DataSet();
sda.Fill(ds, table);
return ds;
}