首页 / 浏览问题 / 组件GIS / 问题详情
.net iobject 10i如何实现和idesktop一样高性能的属性表?
9EXP 2021年11月16日
产品类型:iobject .net 10i ,操作系统:win10 x64

问题描述:现在有一个18万条数据的datasetvector,用C#自带的datagridview来当作属性表控件非常慢,如何实现能像idesktop里面的属性表有10多万条数据就能马上打开?

1个回答

您好,但从性能上来说的话,微软自带的控件比如datagridview这种更多的是功能的稳定,而不是加载性能。

超图这边的组件dataset这块数据的快速读写是没有问题的,而取出来之后的数据状态和界面显示,这块就得您根据您的需求,来优化您的代码结构和c#的“界面开发套包”第三方控件产品,通常来讲一般是商业的比如 DevExpress 等等。

高性能数据读写不管是几何还是属性超图这边是支持的,几何这边超图自己的界面控件map和scens系列也可以支持的,属性这边界面控件就需要您自己选择了。

希望可以帮助到您!

10,538EXP 2021年11月16日
谢谢,我在idesktop的插件开发找到了TabularControl的用户控件类好像可以实现之前提问的功能。但我这样写提示我tabularControl未将对象引用设置到对象的实例。”这个类的正确用法是什么呢?

代码如下:

            TabularControl table = new TabularControl();
            table.DatasetVector = datasetVector;   // 这里报错
            this.panel1.Controls.Add(table);
TabularControl 是桌面二次开发包里的东西,不是单独iobject.net组件包里的
是的,那TabularControl要怎么使用呢?我已经把SuperMap.Desktop.UI给引入了
要做IDesktop桌面二次开发才能用这个,单纯的iobjects.NET组件开发不能用这个包的。
嗯嗯,不是做的单纯的iobject.net开发。请问要怎么用TabularControl这个类呢,像上面那样给datasetVector赋值写会“未将对象引用设置到对象的实例”,使用这个SuperMap.Desktop.UI其他的控件比如ColorButton是可以成功加载出来的。
像TabularControl这种界面窗体类控件最开始已经和您说了,这种都是第三方底层的控件,我们IDesktop产品中有Dev的许可和配置好的包,所以Form类、Ribbon类的控件要在IDesktop二次开发中使用,IObjects.NET组件开发和IDesktop桌面二次开发最大的区别本来也是这几条Desktop相关的包,如果要用的就用IDesktop二次开发去注册创建vs的项目。
谢谢,我现在是环境和工程都已经新建好了,只是想单纯问一问这个TabularControl要怎么用。因为我现在像下面这样写是报错的。

            TabularControl table = new TabularControl(){

                   DatasetVector = datasetVector;   // 这里报错:未将对象引用设置到对象的实例

            }
你不是二次开发工程模板创建的项目是没法用的,你直接创建的iobject.net创建的项目是没有dev相关,只有你引的超图的组件,你即使去在你项目里强行硬dev的包也不行的,因为这个是第三方商业包IDesktop是内嵌了这个包的许可,所以IDesktop创建的二次开发vs项目才可以用。

首先TabularControl不是超图单依赖包的组件开发控件包里的东西,是IDesktop二次开发包里的东西。

其次使用IDesktop二次开发包里的界面专用控件(如Tabular),窗体类控件(如maoForm)等,必须安装二次开发指南里描述的项目模板注册创建vs项目才可用,其它方式创建的项目不可以的。
我悟了大师。谢谢,人生有时候要学会放弃。

我悟了大师。

...