none
主从表数据绑定的新增表单问题 RRS feed

  • 问题

  •       采用主从表数据绑定后,浏览和修改数据没什么大问题,而新增记录这一功能却不好用。
    当点击导航条的新增时,自动将主表(通过在窗体上放置TextBox控件以及ComboBox控件显示主表数据)内容清空,子表(datagridView)也清空了。而我想在点新增按钮时取得表单的单据号填在主表的TextBox里,却也不管用。手工录入到可以,不知为什么。

          另外就是子表增加一行时,子表关联的表单单据号没有从主表获得。觉得很不方便,是不是新增时不应该采用这种数据绑定才好?

    2010年7月15日 12:57

答案

  • 经反复研究解决了此问题。

    原来是这样:BingDingSource新增(AddNew)时要给不能为空的列赋值,应该在AddingNew事件处理过程中给定。

    如下类似代码:

     Private Sub bsMain_AddingNew(ByVal sender As Object, ByVal e As System.ComponentModel.AddingNewEventArgs) Handles bsMain.AddingNew
            e.NewObject = GetMainDefaultData()
            bsMain.EndEdit()
            bsMain.MoveLast()
        End Sub
      Private Function GetMainDefaultData() As DataRowView
            Dim Dv As DataView = CType(bsMain.List, DataView)
            Dim R As DataRowView = Dv.AddNew()
            R.Row(BillIdColumn) = MyBill.NewBillId
            R.Row(DateItem) = DateTime.Now.Date()
            R.Row("Oper") = ClientUser.UserId
            R.Row("stat") = 0
            Return R
        End Function



    陈锦巍

    • 已标记为答案 陈锦巍 2012年2月12日 7:03
    2012年2月12日 7:03

全部回复

  • 本人极少利用绑定的方式来维护数据。 如果业务逻辑稍微复杂一点,直接绑定的方式维护数据非常不方便。 建议你还是别用这种绑定方式来维护数据。

    • 已标记为答案 陈锦巍 2010年8月29日 5:06
    • 取消答案标记 陈锦巍 2010年8月29日 5:06
    2010年7月30日 10:03
  • 经反复研究解决了此问题。

    原来是这样:BingDingSource新增(AddNew)时要给不能为空的列赋值,应该在AddingNew事件处理过程中给定。

    如下类似代码:

     Private Sub bsMain_AddingNew(ByVal sender As Object, ByVal e As System.ComponentModel.AddingNewEventArgs) Handles bsMain.AddingNew
            e.NewObject = GetMainDefaultData()
            bsMain.EndEdit()
            bsMain.MoveLast()
        End Sub
      Private Function GetMainDefaultData() As DataRowView
            Dim Dv As DataView = CType(bsMain.List, DataView)
            Dim R As DataRowView = Dv.AddNew()
            R.Row(BillIdColumn) = MyBill.NewBillId
            R.Row(DateItem) = DateTime.Now.Date()
            R.Row("Oper") = ClientUser.UserId
            R.Row("stat") = 0
            Return R
        End Function



    陈锦巍

    • 已标记为答案 陈锦巍 2012年2月12日 7:03
    2012年2月12日 7:03