代码之家  ›  专栏  ›  技术社区  ›  msfanboy

从未调用C#BindingSource.AddingNew?

  •  0
  • msfanboy  · 技术社区  · 16 年前

    当我离开datagrid的单元格时,从未调用BindingSource.AddingNew。

    BindingSource需要什么来创建新的Customer对象并将其添加到基础ICCustomerList?

    当然,接口没有构造函数。。。

    这是我得到的例外:

    System.MissingMethodException: The constcructor for the type "SAT.EnCoDe.Administration.ICustomer" was not found.
    

    bei System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr、Binder Binder、对象[]args、文化信息区域性、对象[]ActivationAttribute) bei System.SecurityUtils.SecureCreateInstance(类型,对象[]args) bei System.ComponentModel.BindingList 1.AddNewCore() bei System.ComponentModel.BindingList 1.System.ComponentModel.IBindingList.AddNew() bei System.Windows.Forms.BindingSource.AddNew() bei System.Windows.Forms.CurrencyManager.AddNew() bei-DevExpress.Data.CurrencyDataController.OnCurrencyManagerAddNew() bei-DevExpress.Data.CurrencyDataController.AddNewRow() bei DevExpress.XtraEditors.Repository.RepositoryItem.RaiseModified(EventArgs e) bei-DevExpress.XtraEditors.BaseEdit.OnEditValueChanging(ChangingEventArgs e) bei-DevExpress.XtraEditors.TextEdit.OnMaskBox\u值已更改(对象发送方,事件参数e) bei-DevExpress.XtraEditors.Mask.MaskBox.RaiseEditTextChanged() bei System.Windows.Forms.TextBoxBase.wmreflect命令(Message&m) bei-DevExpress.XtraEditors.Mask.MaskBox.BaseWndProc(消息&m) bei-DevExpress.XtraEditors.TextBoxMaskBox.WndProc(消息&味精) bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(消息&m) bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd、Int32 msg、IntPtr wparam、IntPtr lparam)

    2 回复  |  直到 16 年前
        1
  •  0
  •   kubal5003    16 年前

    如果要使用AddNew,则用于数据绑定的对象需要具有无参数构造函数。显然,接口没有构造函数,所以这是一个相当痛苦的问题。您也不能为此目的使用抽象类,因为它不能被实例化。唯一的方法是使用具体类型作为层次结构的根。

    作为参考,你可以看看 IBindingList

    此外,我会放弃它,因为DataGridView在ICancelAddNew上有漏洞,如果用户在新行处于活动状态时按Esc键,或者干脆离开新行,那么恐怖就开始了。根据我的经验,一个更好的解决方案是有一个按钮“添加新…”和另一个带有文本框/组合框(等等)的窗口。如果您使用的是标准DataGrid控件以外的其他DataGrid控件,那么这当然不是问题。

    WPF及其DataGrid组件完全解决了这些问题。如果这是一个新项目,你可以切换到WPF,我强烈建议。这意味着更少的痛苦。

        2
  •  0
  •   Tom W    16 年前

    我不确定我是否理解你的问题;为什么在离开单元格时bindingsource会添加新项?

    推荐文章