菜鸟提问,数据源更新后,DEV的gridcontrol数据如何自动刷新?

问题描述

用的EF6+codefirst,自己定义了一个entity:namespaceDAL_EF.Objects{publicclassInstitution{#region必填信息[Key]publicstringInsID{get;privateset;}publicstringInsName{get;privateset;}publicstringSupervisor{get;privateset;}publicstringInsAddress{get;privateset;}……publicvirtualICollection<Contactor>Contactors{get;privateset;}publicInstitution(){}}}

其中Contactor定义如下:namespaceDAL_EF.Objects{publicclassContactor{[Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]publicGuidID{get;privateset;}publicstringName{get;privateset;}publicInstitutionWorkIn{get;privateset;}publicstringDepart{get;privateset;}publicstringDuty{get;privateset;}publicContactor(){}}}

在frame中有一个datalayoutcontrol,用来展示该实体,使用textedit绑定属性:this.InsIDTextEdit.DataBindings.Add(newSystem.Windows.Forms.Binding("EditValue",this.institutionBindingSource,"InsID",true));

其中institutionBindingSource:this.institutionBindingSource.DataSource=typeof(DAL_EF.Objects.Institution);

对于Contactors,使用gridcontrol:this.gridControl1.DataMember="Contactors";this.gridControl1.DataSource=this.institutionBindingSource;

frame中有一个方法,可以弹出一个dialog新增或者修改Contactor。最后问题来了……我新增或修改一个Contactor后,如何能让gridControl1自己更新新增或更新数据呢??求大神指点啊!用institutionBindingSource.Restbinding不起作用……打断点,发现无论是institutionBindingSource的datasource还是gridControl1的datasource里面的数据其实是已经更新了的,只是gridControl1的显示上没有变化,只能重新打开frame才显示正确,十分无奈。。。。。网上找了一大圈,老外有用currentManager的refrsh方法来弄的。但是我这报错:代码如下://gridControl1.MainView.BeginDataUpdate();//gridControl1.RefreshDataSource();//gridView1.RefreshData();CurrencyManagercm=(CurrencyManager)this.BindingContext[gridControl1.DataSource];cm.Refresh();//gridControl1.ResetBindings();//institutionBindingSource.ResetBindings(false);//gridControl1.MainView.EndDataUpdate();

里面注释掉的方法都是尝试了不起作用的。。。。。用CM报错:引用

未处理System.InvalidCastExceptionHResult=-2147467262Message=无法将类型为“System.Collections.Generic.HashSet`1[DAL_EF.Objects.Contactor]”的对象强制转换为类型“DAL_EF.Objects.Contactor”。Source=DAL_EFStackTrace:在(Object)在DevExpress.Data.Access.DataListDescriptor.FastPropertyDescriptor.GetValue(Objectcomponent)在DevExpress.Data.Helpers.BaseListDataControllerHelper.GetRowValue(Int32listSourceRow,Int32column,OperationCompletedcompleted)在DevExpress.Data.DataController.GetRowValue(Int32controllerRow,Int32column,OperationCompletedcompleted)在DevExpress.Data.BaseListSourceDataController.GetRowValue(Int32controllerRow,Int32column,OperationCompletedcompleted)在DevExpress.XtraGrid.Views.Grid.GridView.GetRowCellValue(Int32rowHandle,GridColumncolumn,OperationCompletedcompleted)在DevExpress.XtraGrid.Views.Grid.GridView.GetRowCellValue(Int32rowHandle,GridColumncolumn)在DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo.GetRowCellValue(GridCellInfocell,Int32rowHandle,GridColumnInfoArgsci)在DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo.CalcRowCellDrawInfo(GridDataRowInfori,GridColumnInfoArgsci,GridCellInfocell,GridColumnInfoArgsnextColumn,BooleancalcEditInfo,GridRownextRow)在DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo.CalcRowCellsDrawInfo(GridDataRowInfori,GridColumnsInfocolumnsInfo,GridRownextRow)在DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo.CalcDataRow(GridDataRowInfori,GridRowrow,GridRownextRow)在DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo.CalcRowsDrawInfo()在DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo.CalcGridInfo()在DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo.Calc(Graphicsg,Rectanglebounds)在DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo.FullRecalcScroll(Graphicsg,Rectanglebounds)在DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo.CalcAfterVertScrollCore(Graphicsg,Rectanglebounds,BooleanuseCache)在DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo.CalcAfterVertScroll(Graphicsg,Rectanglebounds,BooleanuseCache)在DevExpress.XtraGrid.Views.Grid.GridView.RefreshRows(BooleanuseCache,BooleanafterScroll)在DevExpress.XtraGrid.Views.Grid.GridView.CalculateDataCore()在DevExpress.XtraGrid.Views.Grid.GridView.CalculateData()在DevExpress.XtraGrid.Views.Base.BaseView.CheckViewInfo()在DevExpress.XtraGrid.Views.Base.BaseView.Draw(GraphicsCachee)在DevExpress.XtraGrid.GridControl.OnPaint(PaintEventArgse)在DevExpress.Utils.Drawing.ControlPaintHelper.PaintWithErrorHandling(PaintEventArgspaintEventArgs,Int32layer)在DevExpress.Utils.Drawing.ControlPaintHelper.ProcessWMPaint(Message&m)在DevExpress.XtraGrid.GridControl.CheckProcessMsg(Message&m)在DevExpress.XtraGrid.GridControl.WndProc(Message&m)在System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&m)在System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&m)在System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtrhWnd,Int32msg,IntPtrwparam,IntPtrlparam)InnerException:

请问个问题出来哪里???该如何解决呢?或者,有没有更简便的方法能够刷新数据。。。?本人纯菜鸟……大神勿喷

解决方案

本帖最后由 gysos 于 2016-06-17 00:24:08 编辑
解决方案二:
补充一下,如果直接给gridcontrol的datasource可以实现自动刷新:this.gridControl1.DataBindings.Add(newSystem.Windows.Forms.Binding("DataSource",this.institutionBindingSource,"Contactors",true));

但是!!一觉醒来,又不行了,,,,,简直搞不懂啊!!!!!
解决方案三:
没有人么??求帮忙求指导!!!!

时间: 2024-10-03 21:14:34

菜鸟提问,数据源更新后,DEV的gridcontrol数据如何自动刷新?的相关文章

菜鸟提问:在SQL中未找到数据的时候如何返回到C#

问题描述 例如以下代码,如何判断输入的学号不存在,请各位大哥大姐指导下:Console.Write("请输入要删除的学生学号:");inputID=Console.ReadLine();sqlSearch=string.Format("selectstuNofromstudentswherestuNo='{0}'",inputID);comm.CommandText=sqlSearch;stuID=comm.ExecuteScalar().ToString();if

dataset-数据库更新后,调用DataAdapter,DataSet和DataGridView显示数据库

问题描述 数据库更新后,调用DataAdapter,DataSet和DataGridView显示数据库 public void ComonDataView_order_info() { try { DBConnect(); //连接数据库成功后的操作 //创建DataAdapter对象 SqlDataAdapter order_info_da = new SqlDataAdapter("select * from 订单详情", sqlCon); //创建数据集(也可以直接利用.NET的

java-【菜鸟提问】用百分比范围查询数据

问题描述 [菜鸟提问]用百分比范围查询数据 在jsp页面中需要写一个按照百分比范围查询表中的数据怎么写? ?BUG占比范围:?--? 我这样写行么? 解决方案 看你数据库表的定义,一般是先groupby,取得count sum,再根据总记录数算出百分比 相关文章 java-菜鸟提问,求大神解答 www-菜鸟提问:怎求 求求求求 需求-一条SQL的写法,菜鸟提问 设计-菜鸟提问:怎样建一个企业人事管理系统 用SQL和C++ remove-[菜鸟提问] Java关于Interator的问题 编程-j

Dev的GridControl控件嵌套GridView子表内容不显示的问题

问题描述 刚开始学习使用Dev的GridControl,关于嵌套GridView的问题弄的我实在是头大,希望各路高手能指教一下.1.首先在VS中创建数据源,数据源包括Test1和Test2两张表,在数据源设计器中添加关系,为Test1表的id字段与Test2表的parent_id字段建立"关系和外键约束",关系名为"FK_Test1_Test2",其他选项默认:2.在Form中添加gridControl1,mainView为gridView1,手动添加下一级View

dev gridcontrol 行数-dev的gridcontrol获取行数的问题

问题描述 dev的gridcontrol获取行数的问题 dev的gridcontrol获取行数的问题.control没有row这个属性,该怎么获取当前列表里的行数呢? 解决方案 gridView有这个属性 gridControl绑定数据源之后 就是绑定在了gridView上的.

如何取出DetailsView中已更新后的值,谢谢

问题描述 如题 解决方案 解决方案二:Details无法取到FileUpload中的值,已经两天了.急!!!解决方案三:在更新时可以取到DetailsView中的FileUpload,值是却得不到FileUpload的值解决方案四:在Inserting或者Updating或其他的事件中的参数:其中成员中包含了DetailView中的新数据,采用如下两种方式可以获得:1.e.Values[index]2.e.Values[keyname]解决方案五:我的FileUpload并没有绑定数据源,是在模

阿里巴巴提交更新后的招股书

阿里巴巴集团昨日向美国证券交易委员会(SEC)提交更新后的招股书,首次披露了公司27名合伙人名单及任职情况,同时宣布了未来上市公司的9名董事会成员名单.除马云和蔡崇信为永久合伙人外,其余合伙人在离开集团公司或关联公司时,即为退休. 此次更新后的阿里巴巴合伙人名单由28人降为27人,包括22名阿里巴巴集团管理层(其中两位合伙人兼任小微金融服务集团的管理职务).4名小微金融服务管理层及一位菜鸟网络管理层. 阿里巴巴的18名创始人中,有7人进入了此次的合伙人团队,分别是马云.蔡崇信.吴咏铭.彭蕾.戴姗

xcode-怎么检测更新后的应用开始?

问题描述 怎么检测更新后的应用开始? 需要在应用从appstore更新后,做一些操作,用了NSUserDefaults .但是效果不理想,因为只有在第一次更新后才有效. 请高手指点一下应该怎么实现? 解决方案 用MTMigration工程.点击查看具体介绍. 给你个参考: [MTMigration migrateToVersion:@""0.9"" block:^{ // Some 0.9 stuff}];[MTMigration migrateToVersion:

调试-gcc更新后如何使用的问题

问题描述 gcc更新后如何使用的问题 我按照网上的教程更新了gcc,但是不知道该怎么用,程序调试过程中还是旧的版本,希望大神们指点一下 解决方案 你最好是将旧版本删除,再安装新版本. 更新,你可能没有更新成功. 解决方案二: 你是什么发行版呢?如果是ubuntu,直接gcc加版本号就可以了吧,如gcc-4.4什么的,或者自己到/usr/bin目录下改一下软链接 解决方案三: 看样子是新更新的并没有覆盖系统的gcc 而是安装其它路径了 你可以用决定路径来使用gcc编译 解决方案四: 可以去百度问一