iObjects.net开发,数据集添加字段没成功

0 投票
//udb文件,数据集添加新字段没成功,导致新字段内容赋值失败            

Workspace m_workspace = new Workspace();
            Datasources m_datasources = m_workspace.Datasources;
            Scene scene = new Scene();

            DatasourceConnectionInfo datasourceConnectionInfo = new DatasourceConnectionInfo(@"TianYuanLu.udb", "recordset", "");
            Datasource m_datasource = m_datasources.Open(datasourceConnectionInfo);

            DatasetVector dataset = m_datasource.Datasets["NewDataset_01"] as DatasetVector;
            string newFileldName = "新字段_yf";
            Recordset recordset = dataset.GetRecordset(false, CursorType.Dynamic);

            Object[] o = recordset.GetValues();

            FieldInfos fieldInfos = recordset.GetFieldInfos();

            //添加新字段
            if (fieldInfos.IndexOf(newFileldName) != -1)
            {
                Console.WriteLine(newFileldName);
                return;
            }

            FieldInfo layerField = new FieldInfo(newFileldName, FieldType.Text);
            layerField.IsRequired = false;
            layerField.DefaultValue = "新图层";
            layerField.Caption = newFileldName;
            fieldInfos.Add(layerField);
            //刷新记录集
            recordset.Update();

            Object[] o2 = recordset.GetValues();

            bool isSuc1 = recordset.SetFieldValue("图层名称", "测试修改图层名称");
            //对新字段赋值
            bool isSuc2 = recordset.SetFieldValue(newFileldName, "图层名称_YF");
            //刷新记录集
            recordset.Update();
1月 11 分类:  63次浏览 | 用户: namespaces 才疏学浅 (11 分)

1个回答

0 投票
您好,没添加成功有报什么错吗?把数据放在idesktop里面看下,字段有没有新增,换个数据测试下
1月 13 用户: 邬袁凯 名扬四海 (2,429 分)
fieldInfos.Add(layerField);添加后,有值,没出错

  Object[] o2 = recordset.GetValues();查询没看到添加的属性

    bool isSuc2 = recordset.SetFieldValue(newFileldName, "图层名称_YF");就报错了,应该还是没添加成功的问题。

报错内容:{"引发类型为“System.ArgumentException”的异常。\r\n参数名: name"}

能看到最后一个字段就是我添加的新属性,但记录集中查询不到,所以添加出错了

添加字段成功了吧,修改字段值出错,异步处理下看看,先添加字段,然后再另外一个button里重新获取recordset,然后修改试试

还是不行!貌似添加属性字段都没成功,只是fieldInfos.Add(layerField)执行了而已!是不是我的工作空间是new的?

你执行一下代码,添加字段的,然后在idesktop打开,浏览属性表,截个图给我。

执行代码后,没有报错,idesktop打开后,没有看到新增加的属性! 没保存?

我知道原因了,呵呵,哈哈,多谢
...