2013-08-19 3 views
1

Я написал следующий код для создания древовидного представления: он считывает данные из sqlCEserver и генерирует представление согласно. Он работал нормально, прежде чем я вошел во внутренний цикл while, чтобы добавить подпункты в заголовке.Ошибка при добавлении элементов в treeview C#

private void ClientTree_Initialized(object sender, EventArgs e) 
     { 
      string moduleCat = null; 
      string Cname = null; 
      SqlCeConnection _con = new SqlCeConnection(@"Data Source=C:\Users\Family\Desktop\Tranchulas projects\ControlCenter\ControlCenter\bin\Debug\ClientDB.sdf"); 
      _con.Open(); 
      SqlCeDataReader _reader = null; 
      SqlCeDataReader _reader1 = null; 
      SqlCeCommand readMod = new SqlCeCommand(@"SELECT DISTINCT ModuleID FROM ClientRecord", _con); 

      _reader = readMod.ExecuteReader(); 
      while(_reader.Read()) 
      { 

       moduleCat = _reader["ModuleID"].ToString(); 

       treeItem = new TreeViewItem(); 
       treeItem.Header = moduleCat; 

       SqlCeCommand readName = new SqlCeCommand(@"SELECT Cname FROM ClientRecord WHERE (ModuleID = '" + moduleCat + @"')", _con); 
       _reader1 = readName.ExecuteReader(); 
       while (_reader1.Read()) 
       { 
        Cname = _reader["Cname"].ToString(); 
        treeItem.Items.Add(new TreeViewItem() { Header = Cname }); 
        ClientTree.Items.Add(treeItem); 
       } 
      } 
     } 

он дал это исключение:

System.Windows.Markup.XamlParseException occurred 
    HResult=-2146233087 
    Message='Initialization of 'System.Windows.Controls.TreeView' threw an exception.' Line number '10' and line position '99'. 
    Source=PresentationFramework 
    LineNumber=10 
    LinePosition=99 

линия номер 10 является:

<TreeView x:Name="ClientTree" Height="350.4" Width="164.2" HorizontalAlignment="Left" VerticalAlignment="Top" Initialized="ClientTree_Initialized" /> 

ответ

0

Если проблема исчезла, когда вы закомментировать внутреннюю While-цикл, то он может» t - проблема в xaml. (Потому что ничего не изменилось) Правильно ?? Но, кроме ваших исключений, это исключение xamlParseException, странное.

Лучшее, что вы можете здесь сделать, это положить строку InitializeComponent() в оператор try-catch и установить контрольную точку в catchblock. Теперь у вас есть доступ к полной stacktrace с информацией al innerexception, в которой вы нуждаетесь! Удачи.

Инициализаторкомпонент находится в конструкторе с кодом.

try 
{ 
    InitializeComponent(); 
} 
catch (Exception ex) 
{ 
    // set breakpoint here, and watch StackTrace 
} 
+0

Да ничего не меняется! Я попробовал утверждение try-catch, он никогда не ловит никаких исключений. Можете ли вы предложить альтернативный способ добавления элемента в заголовок? – SparkWerk

Смежные вопросы