コード例 #1
0
        private void Method11Target_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ComboBox cb = sender as ComboBox;

            if (cb != null)
            {
                if (cb.SelectedIndex == -1)
                {
                    return;
                }
                else
                {
                    DataGrid grid = this.Method11Grid as DataGrid;
                    if (grid == null || grid.SelectedIndex == -1)
                    {
                        return;
                    }

                    //object values = grid.Items[grid.SelectedIndex];
                    DomainMapRow row       = grid.Items.GetItemAt(grid.SelectedIndex) as DomainMapRow;
                    ComboData    rowSource = _domainTargetValues[cb.SelectedIndex] as ComboData;
                    if (row != null) // if there is a matching target domain value for the selection
                    {
                        // Then update the row DomainMapValues and set the tooltip to the value for the code
                        row.TargetSelectedItem = cb.SelectedIndex;
                        row.TargetTooltip      = rowSource.Tooltip;
                        cb.ToolTip             = rowSource.Tooltip;
                    }
                }
            }
        }
コード例 #2
0
        public void resetDomainValuesUI(List <ComboData> domainValues, string sourceTarget)
        {
            if (sourceTarget == _source)
            {
                _domainSourceValues = domainValues;
            }
            else if (sourceTarget == _target)
            {
                _domainTargetValues = domainValues;
            }

            if (_domainTargetValues != null && _domainTargetValues.Count > 0)
            {
                Method11Grid.Items.Clear();
                for (int i = 0; i < _domainTargetValues.Count; i++)
                {
                    ComboData domainValue = _domainTargetValues[i];
                    if (domainValue.Id != _noneField) // don't want to create a row for None by default
                    {
                        int selected = 0;             // use the default None here...
                        for (int s = 0; s < _domainSourceValues.Count; s++)
                        {
                            if (Equals(_domainSourceValues[s].Tooltip, domainValue.Tooltip)) // tooltip includes both coded value and description, only do initial match if identical values
                            {
                                selected = s;
                            }
                        }
                        // used to always set source selected to 0 - None
                        Method11Grid.Items.Add(new DomainMapRow()
                        {
                            Source = _domainSourceValues, SourceSelectedItem = selected, SourceTooltip = "None", Target = _domainTargetValues, TargetSelectedItem = i, TargetTooltip = getDomainTooltip(domainValue.Id, domainValue.Value)
                        });
                    }
                }
            }
            if (Method11Grid.Items.Count > 0)
            {
                DomainMapRemove.IsEnabled = true;
            }
            else
            {
                DomainMapRemove.IsEnabled = false;
            }

            Method11Grid.InvalidateArrange();
        }
コード例 #3
0
        public List <ComboData> getDomainValuesforTable(TableDefinition def, string fieldName)
        {
            List <ComboData> domainValues = new List <ComboData>();
            // always add a blank at the start
            ComboData item = new ComboData();

            item.Id      = _noneField;
            item.Value   = _noneField;
            item.Tooltip = _noneField;
            domainValues.Add(item);

            try
            {
                IReadOnlyList <ArcGIS.Core.Data.Field> fields = def.GetFields();
                ArcGIS.Core.Data.Field thefield = fields.First(field => field.Name.ToLower() == fieldName.ToLower());
                IReadOnlyList <ArcGIS.Core.Data.Subtype> subtypes = def.GetSubtypes();
                if (subtypes.Count == 0)
                {
                    Domain domain = thefield.GetDomain();
                    if (domain is CodedValueDomain)
                    {
                        var codedValueDomain = domain as CodedValueDomain;
                        SortedList <object, string> codedValuePairs = codedValueDomain.GetCodedValuePairs();
                        for (int i = 0; i < codedValuePairs.Count; i++)
                        {
                            item         = new ComboData();
                            item.Id      = codedValuePairs.ElementAt(i).Key.ToString();
                            item.Value   = codedValuePairs.ElementAt(i).Value.ToString();
                            item.Tooltip = getDomainTooltip(item.Id, item.Value);
                            domainValues.Add(item);
                        }
                    }
                }
                else if (subtypes.Count > 0)
                {
                    List <string> domainNames = new List <string>();
                    for (int s = 0; s < subtypes.Count; s++)
                    {
                        ArcGIS.Core.Data.Subtype stype = subtypes[s];
                        Domain domain = thefield.GetDomain(stype);
                        if (domain != null)
                        {
                            string dname = domain.GetName();
                            if (domain is CodedValueDomain && !domainNames.Contains(dname))
                            {
                                domainNames.Add(dname);
                                var codedValueDomain = domain as CodedValueDomain;
                                SortedList <object, string> codedValuePairs = codedValueDomain.GetCodedValuePairs();
                                for (int i = 0; i < codedValuePairs.Count; i++)
                                {
                                    item         = new ComboData();
                                    item.Id      = codedValuePairs.ElementAt(i).Key.ToString();
                                    item.Value   = codedValuePairs.ElementAt(i).Value.ToString();
                                    item.Tooltip = getDomainTooltip(item.Id, item.Value) + " - " + dname;
                                    bool found = false;
                                    for (int cv = 0; cv < domainValues.Count; cv++)
                                    {
                                        ComboData dv = domainValues[cv];
                                        if (item.Id.Equals(dv.Id) && item.Value.Equals(dv.Value) && item.Tooltip.Equals(dv.Tooltip))
                                        {
                                            found = true;
                                        }
                                    }
                                    if (!found)
                                    {
                                        domainValues.Add(item);
                                    }
                                }
                            }
                        }
                    }
                }
            }

            catch
            {
                ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show("Unable to retrieve domain values for " + fieldName);
                return(domainValues);
            }
            return(domainValues);
        }