Select to view content in your preferred language

How to set displayFieldName of GP-Service in C#?

1090
4
02-07-2014 06:44 AM
StefanOffermann
Deactivated User
I am developing a GP-Service with C#. The output is a feature set containing some attribute values. I want to determine the primary display field, which is contained in the output parameter (6th line, currently the empty string ""):

{
 "results": [{
  "paramName": "result",
  "dataType": "GPRecordSet",
  "value": {
   "displayFieldName": "",
   "geometryType": "esriGeometryPoint",
   "spatialReference": {
    "wkid": 102100,
    "latestWkid": 3857
   },
   "fields": [ ... ],
   "features": [],
   "exceededTransferLimit": false
  }
 }],
 "messages": [ ... ]
}


This is how I built the ParameterInfo:
IGPParameterEdit3 result = new GPParameterClass();
IFeatureClass outputFeatureClass = DoneInAnotherMethod(); // open template from disk
result.DataType = new GPFeatureRecordSetLayerTypeClass();

IRecordSetInit recordset = new RecordSetClass();
recordset.SetSourceTable((ITable)outputFeatureClass, null);

IGPRecordSet recordSet = new GPRecordSetClass();
recordSet.RecordSet = (IRecordSet)recordset;

IGPRecordSet gpRecordSet = new GPFeatureRecordSetLayerClass();
gpRecordSet.RecordSet = new RecordSetClass();
gpRecordSet.RecordSet = (IRecordSet)recordset;

var featureRecordSetLayer = (IGPFeatureRecordSetLayer)gpRecordSet;
result.Value = (IGPValue)featureRecordSetLayer;
result.Name = Constants.OutputParameterName;
result.DisplayName = Constants.OutputParameterName;
result.Direction = esriGPParameterDirection.esriGPParameterDirectionOutput;
result.ParameterType = esriGPParameterType.esriGPParameterTypeDerived;
result.Enabled = true;

IGPFeatureSchema featureSchema = new GPFeatureSchemaClass();
featureSchema.GeometryType = esriGeometryType.esriGeometryPoint;

IGPFeatureClassDomain geomTypeDomain = new GPFeatureClassDomainClass();
geomTypeDomain.AddType(esriGeometryType.esriGeometryPoint);
result.Domain = (IGPDomain)geomTypeDomain;
result.Schema = (IGPSchema)featureSchema;

myParameterInfo.Add(result);


How can I set this value? I cannot find anything useful in ArcObjects. Any Idea?

Best regards, Stefan
0 Kudos
4 Replies
LeoDonahue
Deactivated User
com.esri.arcgis.carto.FeatureLayer
getDisplayField method

According to the docs, that should get you that field.
0 Kudos
StefanOffermann
Deactivated User
com.esri.arcgis.carto.FeatureLayer
getDisplayField method

According to the docs, that should get you that field.


Hm, I dont think I can use the Carto-Namespace when developing a Geoprocessing-Service. At least I didn't try this approach. Am I missing something?
0 Kudos
LeoDonahue
Deactivated User
Maybe it is part of the getMetadata method then?

com.esri.arcgis.geodatabase.DEFeatureClass
0 Kudos
SalvadorJiménez_Prats
New Contributor

After all these years... Have you found the answer?

Is this actually possible?

I'm stuck with that although I'm not building it in C#

Greetings, Salvador

0 Kudos