绑定后,在datagridview后,在最后一行,也就是刚新增的行输入数据后,,通过监视发现这时绑定的dataTable没有被更新,,当将输入光标移其它行时,,刚新增的行的数据才会更新到datatable,,,我现在用了一个笨方法,就是移动输入光标到其它行,再移回来,,我认为还有更好的办法,,,就是即时的将新增行的数据提交给datatable,,,就是不知道怎么做,,请高手指点

解决方案 »

  1.   

    偶的做法 datatable 访问 BR层, Dataview = dt,然后绑定
    不知道这有用吗.呵呵
      

  2.   

    即时是指什么时候?找到这个时候对应的事件,在事件中调用EndEdit方法.
      

  3.   

    直接在DataTable里面添加一行也可以,GridView会自动显示
      

  4.   

    谢谢各们大哥,,可能 各位大哥没有听明白我的意思 ,,我将表绑定到datagridview后,,在控件自增行,也就是最后一行输入数据,,,datagridview会将输入的数据自动更新到绑定的表中去,,但不是马上更新,,,据我观察,需要将鼠标移到其它的行,,并且是事先一起提交到表里,,,,我用了EndEdit或refreach,update都不管用,,最后我用dgv.rows[dgv.currentcell.rowsindex-1]["字段"].selected=true,然后再用同样的方式把光标移回原处才将新编辑的数据提交到表格,,但我觉得这办法太笨了,应该还有好的办法,,谢谢大家
      

  5.   

    更新后 
    重新绑定dt grid自动就更新了啊
      

  6.   

    用BindingSource组件
    一个简单的例子,楼主参考下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.OleDb;namespace WindowsApplication7
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            OleDbConnection c1;
            OleDbDataAdapter da;
            DataTable orders;
            BindingSource bindOrders;        private void btnLoadData_Click(object sender, EventArgs e)
            {
                c1=new OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"f:\\Northwind.mdb\"");
                c1.Open();
                da = new OleDbDataAdapter("select * from orders", c1);
                OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
                orders = new DataTable();
                da.Fill(orders);
                bindOrders = new BindingSource();
                bindOrders.DataSource = orders;
                dataGridView1.DataSource = bindOrders;        }        private void btnUpdate_Click(object sender, EventArgs e)
            {
                bindOrders.EndEdit();
                da.Update(orders );
                c1.Close();
            }
        }
    }
      

  7.   

    楼上的方法是可行的,,但是对我是不可行的,,,因为你在点btnLoadData时,光标离开了bindOrders控件,,最后新增的一行就被提交到orders ,,所以此时bindOrders的数据和orders是同步的,,而我在bindOrders中输入数据,就要对orders做逻辑处理,而这时新增的行还没有提交给orders,必须要我将选择单格移到该行以外的单格,数据才提交给orders,,
      

  8.   

    这跟有逻辑处理没有关系的
    bindOrders.EndEdit();调用这个方法,就可以将新增的行添加到datatable中去的