怎样实现这样的功能:dataadapter-〉dataset-〉datagrid,当我选中datagrid中的某一条,点击按钮使其删除,但是不update dataadapter,只是在datagrid里面不显示此数据。当我删除多条以后,点击按钮保存,update 到 dataadapter里面去?
我在实现此功能的时候出现问题:我使用这样的语句来删除this.dataset11.Tables[0].Rows[this.dataGrid1.CurrentRowIndex].Delete();,但是当我第二次删除某条数据的时候,dataset里面数据表的row已经和datagrid的row错位了,也就是说,表单上显示的被选中数据,实际在datatable里面的row已经不是在datagrid里面的row了。简单地说,就是怎样能取得我在datagrid里面选中的数据在datatable里面的真实的row?
我在实现此功能的时候出现问题:我使用这样的语句来删除this.dataset11.Tables[0].Rows[this.dataGrid1.CurrentRowIndex].Delete();,但是当我第二次删除某条数据的时候,dataset里面数据表的row已经和datagrid的row错位了,也就是说,表单上显示的被选中数据,实际在datatable里面的row已经不是在datagrid里面的row了。简单地说,就是怎样能取得我在datagrid里面选中的数据在datatable里面的真实的row?
sqlDataAdapter1.DeleteCommand的命令字串及条件参数是自动生成的那种, 你检查一下参数值就知道了,原因可能是为DataColumn设置了表达式引起的.第二贴
BindingManager bindManager=dataGrid.BindingContext[dataSource,dataMember];
bindManager.RemoveAt (bindManager.Position ); //永远只删除当前行
locateangel:添加记录同步这个怎么处理你知道吗?有代码的话贴上来我学习以下啊
bindManager.RemoveAt (bindManager.Position ); 这种方法,为什么每次删除的都是第一行?
每个DataGrid最终都是绑定到DataView的,而这个DataView并不是固定的,当父表记录变化时,原DataView已DisiPose(),代之匹配父记录的新视图. 见到好些人从DataTable.DefaultVeiw去取这个视图,不出错才怪. 正解是不管父子表都从窗口的BindingContext取得BindingManagerBase, 使用EndCurrentEdit (),CancelCurrentEdit,RemoveAt,AddNew或Add,Position 等方法和属性来操作数据你可以用反射器找到:Related_CurrencyManager 类,有ParentManager_CurrentChanged事件的处理,并见有调用其基类CurrencyManager.SetDataSourc函数证明里面使list=null,和去掉了ListChanged 事件,所以,如果关系中的子表绑定经理不随父表当前行的变化而刷新的话,会出现 ListChanged事件失效等等问题.
能不能贴出完整的代码啊,