2016-02-25 4 views
1
Имя

файла: location.xmlПопытка связать XML с ComboBox с помощью WinForm и C#

<?xml version="1.0" encoding="utf-8" ?> 
<locations> 
    <location id="1" position="Holiday" /> 
    <location id="2" position="Time Off" /> 
    <location id="3" position="Training" /> 
</locations> 

Я пытаюсь заполнить выпадающий с «текст» из положения. В настоящее время идентификатор не требуется.

Мой C# код

 var obj = XDocument.Load("location.xml");    
     comboBox1.DisplayMember = "LocationPosition"; 
     comboBox1.ValueMember = "LocationID"; 

     comboBox1.DataSource = obj.Descendants("location").Select(x => new 
     { 
      LocationPosition = x.Attribute("name").Value, 
      LocationID = x.Attribute("id").Value 
     }).ToList(); // Crashing here 

Сообщение об ошибке говорит

System.NullReferenceException was unhandled 
    HResult=-2147467261 
    Message=Object reference not set to an instance of an object. 
    Source=CalendarSharing 
    StackTrace: 
+0

Что такое ' "имя"' в этой строке? 'LocationPosition = x.Attribute (« name »). Значение« – Sakura

+0

»я не могу сказать. Отладчик не покажет мне значение –

ответ

2

Это потому, что нет никакого name атрибута в этом XML-строки.

Изменение name в position:

var obj = XDocument.Load("location.xml");    
    comboBox1.DisplayMember = "LocationPosition"; 
    comboBox1.ValueMember = "LocationID"; 

    comboBox1.DataSource = obj.Descendants("location").Select(x => new 
    { 
     LocationPosition =x.Attribute("position").Value, 
     LocationID = x.Attribute("id").Value 
    }).ToList(); 
Смежные вопросы