datagridview作为数据录入界面 做一winform系统,明细数据的输入是个难做的问题,对于明细多条数据录入的,我用的是datagridview,在datagridview行里输入数据,点击保存数据保存把数据保存到数据库表中,数据保存这块一直没有处理好,保存数据会经常出错,做过类似问题的请给些建议或是例子,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 为什么能出错呢。你用databingsource 了吗 ? 你在插入前先判断下是不是数据行然后在插入就好了 我做过 没有错误 他提示什么错误?? 插入之前遍历数据 判断如果是数据行就插入 可以考虑用dataset 实现 你的意思是在datagridview里自由编辑数据然后提交到数据库么??? 如果是SQL数据我想我也许能帮到你的忙... 我把我做过的列子给你看下如果有用就拿去参考下吧呵呵 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) Bind(); } private void Bind() { SqlConnection con = new SqlConnection("server=.;database=Students;uid=sa;pwd=1"); con.Open(); SqlDataAdapter da = new SqlDataAdapter("select * from StuInfo", con); DataSet ds = new DataSet(); da.Fill(ds, "stuinfo"); con.Close(); GridView1.DataSource = ds.Tables["stuinfo"].DefaultView; //定义Gridview的记录的键字段 string[] keys = new string[] { "Id" }; GridView1.DataKeyNames = keys; GridView1.DataBind(); } protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) { GridView1.EditIndex = e.NewEditIndex; Bind(); } protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { SqlConnection con = new SqlConnection("server=.;database=Students;uid=sa;pwd=1"); con.Open(); int Id =Convert .ToInt32( ((TextBox)GridView1.Rows[e.RowIndex].Cells[0].Controls[0]).Text); string Name=((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text; string Sex=((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text; string Love=((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text; string strsql = "update StuInfo set Name='"+Name+"',Sex='"+Sex+"',Love='"+Love+"' where Id="+Id; SqlCommand cmd = new SqlCommand(strsql, con); cmd.ExecuteNonQuery(); con.Close(); GridView1.EditIndex = -1; Bind(); } protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { GridView1.EditIndex = -1; Bind(); }}总之先看看不明白的地方在提呵呵希望帮得到你原理都在这里了 我做过类似的是绑定DataTable,然后保存的时候检测DataTable的RowState 然后根据Add Modified Deleted 等等状态来提交到数据库 保存到数据库的代码有问题了吧,从datagridveiw里取数应该没问题,麻烦的是对于所取出的同一行的数据是否匹配等的判断。 写了一个海关QP的导入外挂,需要的请联系我 Graphic 画图时像素有偏差的问题 关于C#窗体问题 C#中连接及查询Access出现的问题 C#FTP上传上载 关于RichTextBox插入ole对象后内存释放的问题。help!!! 关于BackgroundWorker控件进度条的问题? [50分]求一个生成数组的算法 u盘插入如何触发事件? vs2005的问题 程序实现触发器或者监测数据的更新 动态添加数据库中的按钮
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
Bind();
}
private void Bind()
{
SqlConnection con = new SqlConnection("server=.;database=Students;uid=sa;pwd=1");
con.Open();
SqlDataAdapter da = new SqlDataAdapter("select * from StuInfo", con);
DataSet ds = new DataSet();
da.Fill(ds, "stuinfo");
con.Close();
GridView1.DataSource = ds.Tables["stuinfo"].DefaultView; //定义Gridview的记录的键字段
string[] keys = new string[] { "Id" };
GridView1.DataKeyNames = keys;
GridView1.DataBind();
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
Bind();
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
SqlConnection con = new SqlConnection("server=.;database=Students;uid=sa;pwd=1");
con.Open();
int Id =Convert .ToInt32( ((TextBox)GridView1.Rows[e.RowIndex].Cells[0].Controls[0]).Text);
string Name=((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text;
string Sex=((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text;
string Love=((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text;
string strsql = "update StuInfo set Name='"+Name+"',Sex='"+Sex+"',Love='"+Love+"' where Id="+Id;
SqlCommand cmd = new SqlCommand(strsql, con);
cmd.ExecuteNonQuery();
con.Close(); GridView1.EditIndex = -1;
Bind();
}
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
Bind();
}
}
总之先看看不明白的地方在提呵呵希望帮得到你原理都在这里了