C#winform中修改datagridview就跟修改SqlServer数据库一样要双击单元格开始编辑单元格,当离开
当离开当前编辑行的时候就把这条行记录更新到数据库,要怎么做?用webservice实现。我的部分代码如下://不知道该放在哪里的前台代码DataTabledt=dataG...
当离开当前编辑行的时候就把这条行记录更新到数据库,要怎么做?用webservice实现。我的部分代码如下:
//不知道该放在哪里的前台代码
DataTable dt = dataGridView1.DataSource as DataTable;
if (dt == null)
return; //空数据 不再执行
dt.AcceptChanges();
int flag = pwd.GCXMUpdate(dt, strSql.ToString());//pwd为webservice的实例
//webservice里的修改方法
[WebMethod]
public int GCXMUpdate(DataTable dt, string sql)
{
JNJP.BLL.Tbl_GCXMXX bll = new JNJP.BLL.Tbl_GCXMXX();
SqlDataAdapter da = bll.GetAdapter(sql);//用的是三层 执行完sql返回SqlDataAdapter
//根据当前 创建 Update命令
SqlCommandBuilder builder = new SqlCommandBuilder(da);
//获得可以用来更新数据源 的 update 命令
da.UpdateCommand = builder.GetUpdateCommand(true);
//将数据更新回 数据库!
return da.Update(dt);
}
不知具体该怎么做呢?希望有完整的代码!
其实网上也有很多好方法,但不是我想要的呢!也不会修改。
参考http://blog.sina.com.cn/s/blog_55c456dc0100jdtg.html 展开
//不知道该放在哪里的前台代码
DataTable dt = dataGridView1.DataSource as DataTable;
if (dt == null)
return; //空数据 不再执行
dt.AcceptChanges();
int flag = pwd.GCXMUpdate(dt, strSql.ToString());//pwd为webservice的实例
//webservice里的修改方法
[WebMethod]
public int GCXMUpdate(DataTable dt, string sql)
{
JNJP.BLL.Tbl_GCXMXX bll = new JNJP.BLL.Tbl_GCXMXX();
SqlDataAdapter da = bll.GetAdapter(sql);//用的是三层 执行完sql返回SqlDataAdapter
//根据当前 创建 Update命令
SqlCommandBuilder builder = new SqlCommandBuilder(da);
//获得可以用来更新数据源 的 update 命令
da.UpdateCommand = builder.GetUpdateCommand(true);
//将数据更新回 数据库!
return da.Update(dt);
}
不知具体该怎么做呢?希望有完整的代码!
其实网上也有很多好方法,但不是我想要的呢!也不会修改。
参考http://blog.sina.com.cn/s/blog_55c456dc0100jdtg.html 展开
1个回答
展开全部
/*以下是我在自己三层项目改过来的,先在设计模式下拉一dataGridView控件,名称叫dataGridView1,添加一属性text值为“修改” 属性name值为“ btnUpdate”的button控件,还有一个属性name值为btnCancel的取消控件。
以下是cs代码,把整个复制过去,改下空间名,和类名(这里指窗体名字),就行了
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace LDZ.HMISAUX
{
public partial class frmUsersEdit : Form
{
public frmUsersEdit()
{
InitializeComponent();
}
/// <summary>
/// 构造一个方法,并绑定数据到dataGridView控件中
/// </summary>
///
private void GetUsers()
{
try
{
SqlConnection conn=new SqlConnection("server=localhost;database=test;uid=abc;pwd=abc");
conn.Open();
string sql=string.Format("Select all * from testTable");
SqldataAdapter SDA=new SqldataAdapter(sql,conn);
DataSet DS = ShowUsers.GetUsers();
SDA.Fill(DS,"testTable");
this.dataGridView1.DataSource = DS.Tables[0].DefaultView;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private int Aid;
private string ALoginId;
private string AUserName;
private void btnUpdate_Click(object sender, EventArgs e)
{
try
{
SqlConnection conn=new SqlConnection("server=localhost;database=test;uid=abc;pwd=abc");
conn.Open();
string sql=string.Format("update testTable set LoginId=' "+ALoginId+" ' ,UserName=' "+AUserName;+" ' where id=' "+Aid+" ' ");
SqldataAdapter SDA=new SqldataAdapter(sql,conn);
DataSet DS = ShowUsers.GetUsers();
SDA.Fill(DS,"testTable");
this.dataGridView1.DataSource = DS.Tables[0].DefaultView;
MessageBox.Show("修改记录成功");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
try
{
if (dataGridView1.Rows.Count > 0)
{
Aid = int.Parse(this.dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString());
ALoginId = this.dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
AUserName = this.dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString();
AUserpwd = this.dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString();
AEmail = this.dataGridView1.Rows[e.RowIndex].Cells[4].Value.ToString();
AUserGroup = int.Parse(this.dataGridView1.Rows[e.RowIndex].Cells[5].Value.ToString());
AUserType = int.Parse(this.dataGridView1.Rows[e.RowIndex].Cells[6].Value.ToString());
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void UpdateUsers_Load(object sender, EventArgs e)
{
GetUsers();
}
}
}
}
以下是cs代码,把整个复制过去,改下空间名,和类名(这里指窗体名字),就行了
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace LDZ.HMISAUX
{
public partial class frmUsersEdit : Form
{
public frmUsersEdit()
{
InitializeComponent();
}
/// <summary>
/// 构造一个方法,并绑定数据到dataGridView控件中
/// </summary>
///
private void GetUsers()
{
try
{
SqlConnection conn=new SqlConnection("server=localhost;database=test;uid=abc;pwd=abc");
conn.Open();
string sql=string.Format("Select all * from testTable");
SqldataAdapter SDA=new SqldataAdapter(sql,conn);
DataSet DS = ShowUsers.GetUsers();
SDA.Fill(DS,"testTable");
this.dataGridView1.DataSource = DS.Tables[0].DefaultView;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private int Aid;
private string ALoginId;
private string AUserName;
private void btnUpdate_Click(object sender, EventArgs e)
{
try
{
SqlConnection conn=new SqlConnection("server=localhost;database=test;uid=abc;pwd=abc");
conn.Open();
string sql=string.Format("update testTable set LoginId=' "+ALoginId+" ' ,UserName=' "+AUserName;+" ' where id=' "+Aid+" ' ");
SqldataAdapter SDA=new SqldataAdapter(sql,conn);
DataSet DS = ShowUsers.GetUsers();
SDA.Fill(DS,"testTable");
this.dataGridView1.DataSource = DS.Tables[0].DefaultView;
MessageBox.Show("修改记录成功");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
try
{
if (dataGridView1.Rows.Count > 0)
{
Aid = int.Parse(this.dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString());
ALoginId = this.dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
AUserName = this.dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString();
AUserpwd = this.dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString();
AEmail = this.dataGridView1.Rows[e.RowIndex].Cells[4].Value.ToString();
AUserGroup = int.Parse(this.dataGridView1.Rows[e.RowIndex].Cells[5].Value.ToString());
AUserType = int.Parse(this.dataGridView1.Rows[e.RowIndex].Cells[6].Value.ToString());
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void UpdateUsers_Load(object sender, EventArgs e)
{
GetUsers();
}
}
}
}
追问
ShowUsers.GetUsers(); 这里面什么内容啊?
追答
哦,那是我在三层的代码漏改的部分,你把DataSet DS = ShowUsers.GetUsers();这一行代码改为
DataSet DS = new DataSet();就行了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询