ArcGIS Web 编辑中 只读字段和隐藏字段设置

1  需求来源

在与客户交流过程中,遇到这样一个问题:在Web端(如Silverlight程序中)进行要素属性编辑时,如何设置字段的只读,或者隐藏某些字段呢?

当时听到这个问题,第一反应是通过编辑模板来进行控制,但是并没有找到合适的地方。今天问了问其他同事,得知可以通过图层属性进行设置,于是进行了测试,真就成功了,这里要谢谢北京的张文老师。

2  数据设置

要进行web编辑,数据当然得来自ArcSDE,这里选择两个图层,其中一个待编辑的图层GEO_SUR_WS,另一个GEO_REGION则主要是作为底图。图层如下:
ArcGIS Web 编辑中 只读字段和隐藏字段设置_第1张图片
地图如下:
ArcGIS Web 编辑中 只读字段和隐藏字段设置_第2张图片
首先对待编辑图层进行属性设置,隐藏BM_L_WATER字段(取消复选框):

然后设置BM为只读字段:
ArcGIS Web 编辑中 只读字段和隐藏字段设置_第3张图片
字段已经设置好,为了方便Web端编辑,设置编辑模板:
ArcGIS Web 编辑中 只读字段和隐藏字段设置_第4张图片
ArcGIS Web 编辑中 只读字段和隐藏字段设置_第5张图片

在上述编辑模板中,可以看到,ArcGIS自动维护的字段(OBJECTID_1、SHAPE、SHAPE.LEN、SHAPE.AREA)均没有显示,我们设置了隐藏的字段BM_L_WATER,也没有显示,而BM字段虽然显示,却是灰色的,表明其不可编辑。

保存地图文档,将文档发布为地图服务,记住勾选Feature Access选项,以便在Web端使用编辑功能。
ArcGIS Web 编辑中 只读字段和隐藏字段设置_第6张图片
通过服务目录浏览刚刚发布的服务,可以看见有地图服务和要素服务:

3 程序测试

接下来通过程序进行测试,本例采用Silverlight API,XAML代码如下:
<Grid x:Name="LayoutRoot" Background="White">
        <esri:Map x:Name="map">
            <esri:ArcGISDynamicMapServiceLayer x:Name="hydroMap" Url="http://esri-huangd/arcgis/rest/services/webedit/MapServer"
                                               Token="n_RcVQLbzVGS5ThYnEdpJ8DXzDxyQ3CzLqERelrqlZWfqIdLISVBenN1quJTEDCySBY2mdDZJEqZ19YHGc3MlV2wDj_afN-YQkKlB1EzBMI."/>
            <esri:FeatureLayer ID="sur_ws" DisableClientCaching="True" AutoSave="False" OutFields="*" Mode="OnDemand"
                               Token="n_RcVQLbzVGS5ThYnEdpJ8DXzDxyQ3CzLqERelrqlZWfqIdLISVBenN1quJTEDCySBY2mdDZJEqZ19YHGc3MlV2wDj_afN-YQkKlB1EzBMI."
                               Url="http://esri-huangd/arcgis/rest/services/webedit/FeatureServer/0"/>
        </esri:Map>
        <esri:EditorWidget x:Name="MyEditorWidget" Map="{Binding ElementName=map}" Width="300" AutoSelect="False" AlwaysDisplayDefaultTemplates="True" 
            GeometryServiceUrl="http://tasks.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer" ShowAttributesOnAdd="True" Loaded="EditorWidget_Loaded"/>
    </Grid>
后台代码如下:
private void EditorWidget_Loaded(object sender, RoutedEventArgs e)
        {
            string[] myLayerIDs = { "sur_ws" };
            MyEditorWidget.LayerIDs = myLayerIDs;
        }
编译运行,编辑器如下:

用编辑模板在图上绘制一个图形,自动弹出属性编辑对话框如下:

编辑完成后,再单独选择一个要素,点击属性编辑按钮,弹出属性编辑对话框,如下:
ArcGIS Web 编辑中 只读字段和隐藏字段设置_第7张图片

细心的读者可能已经发现,编辑要素时自动弹出的属性对话框与单独编辑属性弹出的对话框中,包含的属性不完全一样:前者少了个BM字段,即不包含只读字段。

总结:通过测试我们发现,可以在图层的属性对话框中设置字段的只读和隐藏。如果设置了字段隐藏,则字段在编辑模板中不会出现,而且在Web端属性编辑对话框中也不会出现。如果设置了字段只读,则在编辑模板中该字段还会出现,但是显示为灰色;而在Web端,当编辑要素时自动弹出属性对话框时,不会显示只读的属性,如果是单独选择要素并编辑属性,则会显示只读属性,但显示为灰色,不能编辑。

你可能感兴趣的:(Web,测试,文档,token,silverlight,binding)