iwill
路人甲
路人甲
  • 注册日期2007-05-20
  • 发帖数3
  • QQ
  • 铜币119枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1481回复:2

删除图层属性 DeletField

楼主#
更多 发布于:2007-05-29 10:45
<P>我在用Arcgisengine和c#做图层属性的修改,包括添加和删除.添加已经正常实现,但是删除却出了问题.代码如下,具体过程为首先得到图层的IFeatureClass ,然后进行属性的添加删除.<BR>    IWorkspace ws = null;</P>
<P>    IPropertySet pPropSet  = new PropertySetClass();<BR>    IWorkspaceFactory pSdeFact = new SdeWorkspaceFactoryClass();<BR>    IFeatureWorkspace asd;</P>
<P>    pPropSet.SetProperty("SERVER", 登录.sname );<BR>    pPropSet.SetProperty("INSTANCE", "5151");<BR>    pPropSet.SetProperty("DATABASE", "sde");<BR>    pPropSet.SetProperty("USER", "sde");<BR>    pPropSet.SetProperty("PASSWORD", "sde");<BR>    pPropSet.SetProperty("VERSION", "sde.DEFAULT");<BR> <BR>    asd = (IFeatureWorkspace)pSdeFact.Open(pPropSet, 0);<BR>    ws=pSdeFact.Open(pPropSet, 0);<BR>    String[] ll=AddSDEData.layername ;<BR>    <BR>    pLayerclass=asd.OpenFeatureClass (Form1.tablename );  </P>
<P>这时候pLayerclass正常得到,因为程序中要读取它的属性内容,正常得到.</P>
<P>     IFieldsEdit pFieldsEdit; <BR>     IFields pfields;<BR>     IField pfield;<BR>     pfields = pLayerclass.Fields ;<BR>     pfield = pfields.get_Field (pfields.FindField (this.comboBox2 .Text .ToString ()));<BR>     pLayerclass.DeleteField (pfield);</P>
<P>通过pfield = pfields.get_Field (pfields.FindField (this.comboBox2 .Text .ToString ()));<BR>已经得到了这个属性,但是在删除的时候就会提示the table is locked或者不存在一个GDB_NETDATESET表,不知道怎么回事,大家帮忙看看啊</P>
喜欢0 评分0
lovegismore
路人甲
路人甲
  • 注册日期2006-07-25
  • 发帖数21
  • QQ
  • 铜币210枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2007-05-31 09:38
确认你删除的字段不是图层保留字段.如shape,fid,area,lenth这样的
举报 回复(0) 喜欢(0)     评分
iwill
路人甲
路人甲
  • 注册日期2007-05-20
  • 发帖数3
  • QQ
  • 铜币119枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2007-05-31 10:28
我删除的是我自己通过AddField方法加上去的字段,不会不能删除吧<br>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部