读书人

BindingSource增加行,怎移到

发布时间: 2012-08-03 00:12:14 作者: rapoo

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处理。

读书人网 >C#

热点推荐