none
bindingsource不能将外部对象添加到此列表? RRS feed

  • 问题

  • 一个窗体,主细表结构,分别用bindingsource绑定,主表新增时,在addingNew事件初始化一些数据,比如单据号、单据状态等。主表初始化完成后添加子表。运行正常。后来加了一个筛选功能,然而把过滤条件给了主表的bindingsource后发现新增出问题了,老是提示“不能将外部对象添加到此列表”,也就是说,当主表进行了筛选后,哪怕筛选的结果还是一条数据不少的情况下,再添加新表单时就会出问题,就会提示“不能将外部对象添加到此列表”,谁是外部对象?难道经过筛选后,datarowview发生变化了?
    部分代码如下:

    Private Sub AddNewBill_Click(sender As System.Object, e As System.EventArgs) Handles AddNewBill.Click If btnSave.Enabled Then
               
    MsgBox("未保存当前单据,请先保存后再新增。", MsgBoxStyle.Exclamation)
           
    Else
                bsMain.AddNew()
    '这里在执行完addingNew后会提示“不能将外部对象添加到此列表”
            End If
       
    End Sub
       
    Private Sub bsMain_AddingNew(sender As Object, e As System.ComponentModel.AddingNewEventArgs) Handles bsMain.AddingNew
            blnAddNew
    = True
           
    '设置初始值
            e.NewObject =GetBillDefault(bsMain) 
            bsMain.MoveLast()
            bsMain.EndEdit()
            AddDetailRow()
            bsDetail.Sort
    = "In_Line"
    '执行很正常,没出任何提示
        End Sub
       
    Private Function GetBillDefault(ByVal Bs As BindingSource) As Object
           
    Dim Dv As DataView = CType(Bs.List, DataView)
           
    Dim R As DataRowView = Dv.AddNew()
            R.Row.Item(
    "in_id") = MyBillControl.GetBillSN()
            R.Row(
    "In_Type") = BillType
            R.Row(
    "Oper") = ClientUser.UserId
            R.Row(
    "stat") = 0
           
    Return R
       
    End Function


    陈锦巍

    陈锦巍
    2011年6月24日 2:45

答案

全部回复