BindingSource增加行,怎移到新增的行上面
我有2TextBox使用BindingSource进行了绑定,现在要新增一行,先有一个按钮清空2个TextBox的值,然后输入新的内容后点新增,新增是增加了,但新增前记录所在的那一行也变成了和新增的行一样的内容.
因为清空按钮只是清空了值,记录的位置还是没有变,所以新增时会新增一行,同时原记录也会修改成新增的行的内容,但怎么新增时让当前记录移到新的行呢?
想了2天了,晚上都没睡好,一直没有解决,谢谢大家
以下是代码
- C# code
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace PMMIS.TEST{ public partial class frmLx : Form { public frmLx() { InitializeComponent(); } SqlConnection cn; BindingSource bs; private void frmLx_Load(object sender, EventArgs e) { cn = new SqlConnection("server=10.0.0.1;database=kerno;uid=sa;pwd=sa"); cn.Open(); SqlDataAdapter da = new SqlDataAdapter("select ,名 from grou", cn); DataSet ds = new DataSet(); da.Fill(ds); bs = new BindingSource(); bs.DataSource = ds.Tables[0]; txtId.DataBindings.Add("text", bs, ""); txtName.DataBindings.Add("text", bs, "名"); bs.AddingNew += new AddingNewEventHandler(bs_AddingNew); //注册委托方法 } void bs_AddingNew(object sender, AddingNewEventArgs e) { BindingSource bstemp = (BindingSource)sender; DataView view = (DataView)bstemp.List; DataRowView row = view.AddNew(); row[""] = txtId.Text; row["名"] = txtName.Text; e.NewObject = row; } private void btnAdd_Click(object sender, EventArgs e) { bs.AddNew(); //自动触发上面的bs_AddingNew委托方法 } //清空文本框内容 private void btnClear_Click(object sender, EventArgs e) { txtId.Text = ""; txtName.Text = ""; } }}
[解决办法]
BindingSource bstemp = (BindingSource)sender;
bstemp.AddNew();
DataRowView row = bstemp.Current as DataRowView;
//DataView view = (DataView)bstemp.List;
//DataRowView row = view.AddNew();
row[""] = txtId.Text;
row["名"] = txtName.Text;
e.NewObject = row;
对BindingSource处理,不对DataVIew处理。