通过DATAGRIDVIEW我绑定了一个 DATASET  
在DATAGRIDVIEW里 做了修改
然后把与他绑定的DATASET通过MessageBox.Show(dsAssistantBill.Tables[0].Rows[2]["XH"].ToString());显示其中被改动的一个CELL  结果显示的是未改动前的数值.但我又通过new CancelBillForm(dsAssistantBill).Show();把这个DATASET传到 另一个窗体中 显示的就是改动后的数值这是为什么?

解决方案 »

  1.   

    在DATAGRIDVIEW里 做了修改后你把输入焦点转到随便什么地方,看看改变会不会提交。
      

  2.   

    MessageBox.Show(dsAssistantBill.Tables[0].Rows[2]["XH"].ToString())?你肯定你改动的是DataGridView上的第三行?Rows[2]应该对应第三行吧?然后没有点击后列标题进行过排序什么的?你绑定时用了BindingSource了吗?在.net 2.0 winform绑定时不用BindingSource会显得对不起.net 2.0的。因为BindingSource会在后台给你实现IBindingList,一个专门利于winform绑定的接口,还帮你维护一个强类型的List等等。((DataRowView)bs.Current)["XH"]就能访问当前行的XH字段值。//bs:BindingSource
      

  3.   

    试试现执行这一句 dsAssistantBill.Tables[0].Rows[2].EndEdit()
      

  4.   

    现在是 我修改了一个CELL 然后把光标离开 所修改的这行
    再保存 就OK了
    怎么处理 才能让它 不要移动光标 就可以保存住dataBillGood.DataSource = dsAssistantBill;
                dataBillGood.DataMember = dsAssistantBill.Tables[0].ToString();
                //dataBillGood.Rows.Remove(dataBillGood.CurrentRow);
                dataBillGood.Columns[0].Visible = false;
                dataBillGood.Columns[1].Visible = false;
                dataBillGood.Columns[2].HeaderText = "项号";
                dataBillGood.Columns[3].HeaderText = "商品编号";
                dataBillGood.Columns[4].HeaderText = "商品名称、规格型号";
                dataBillGood.Columns[5].HeaderText = "数量及单位";
                dataBillGood.Columns[6].HeaderText = "最终目的国(地区)单价";
                dataBillGood.Columns[7].HeaderText = "总价";
                dataBillGood.Columns[8].HeaderText = "币制";
                dataBillGood.Columns[9].HeaderText = "征免";
                dataBillGood.Columns[10].Visible = false;
    这是绑定您刚才说的BindingSource 能不能给快代码 看看
      

  5.   

    把一个BindingSource组件拖到窗体上。比如设Name:bsbs.DataSource= dsAssistantBill.Tables[0];或者bs.DataSource = dsAssistantBill;
    bs.DataMember = "表名";这样你以后就可以用bs来操作DataSet的内容了。
    BindingSource的出现确实是个大改进,希望多查资料学习。执行bs.EndEdit();会提交当前更新到基础列表。
      

  6.   

    对了,如果不是涉及特别复杂的东东,你完全可以用Data Sources Desiginer,也就是数据源编辑器建立强类型的数据源。vs2005这方面要比2003做得更好,简单应用推荐用这种方式。就算是多个相关表的应用也可以用这种方式。设计器会自动为你创建强类型数据源及每个表对应的TableAdapter,BindingSource, BindingNavigator等。vs2005个人觉得用设计器更好,提供的功能比2003时强多了~
      

  7.   

    设计器会自动为你创建强类型数据源及每个表对应的TableAdapter,BindingSource, BindingNavigator等。这种类似的例子有吗?