2013-08-28 79 views
1

我的目標是查詢表,並把它添加到ListView控件。我只收到一個列名和錯誤的空ListView。我使用了教程,但它沒有幫助。我意識到空行被添加,因爲我可以點擊它們。GTK#TreeView和StoreList won''t顯示數據

 using (MySqlConnection connect = new MySqlConnection(connectionString)) 
     { 
      connect.Open(); 

      // QUERY GENERATION 

      mySqlCommand = new MySqlCommand(query, connect); 

      // QUERY PARAMETERS ADDED 

      ListStore store = new Gtk.ListStore(typeof(string[])); 

      for (int i = 0; i < tempselect.Length; i++) { 
       _treeView.AppendColumn(tempselect[i], new Gtk.CellRendererText(), "text"); 
      } 

      MySqlDataReader reader = mySqlCommand.ExecuteReader(); 

      while (reader.Read()) 
      { 
       store.AppendValues(reader); 
      } 
      reader.Close(); 

      _treeView.Model = store; 

      connect.Close(); 
     } 

沒有錯誤。該應用程序只是不顯示數據。表中有數據。 我正試圖解決這一整天。什麼都沒有

謝謝。

+0

我甚至嘗試添加一列和一個字符串到TreeView,結果是一樣的....空! – Orvel

+0

我正在考慮放棄Linux的CSharp開發。太多的問題和BUG。我仍處於發展的初期,現在比以後更好。當應用程序變大時,它將成爲更大的問題。 – Orvel

+0

這是您的代碼中的錯誤,而不是在Linux,單聲道或Gtk + – jstedfast

回答

1

我不知道是什麼tempSelect是基於您粘貼代碼...

我會建議在循環嘗試這樣的:

var column = new TreeViewColumn(); 
column.Title = "Column Name"; 
column.Clickable = false; 

var renderer = new CellRendererText(); 
column.PackStart (renderer, true); 

column.AddAttribute (renderer, "text", 0); 
_treeView.AppendColumn (column); 

我懷疑你的問題是,你只是需要將0作爲最後一個參數傳遞給您調用的AppendColumn()方法。需要該值指定文本駐留在其列。

+0

謝謝你的回覆。 Mono和GTK#在網上沒有什麼幫助。您提供的代碼不起作用。我嘗試了一堆解決方案,他們都沒有工作。 我在我的應用程序中使用的代碼是使用WinForms編寫的,並且它在那裏工作得很好。在Mono上,控件存在問題,所以我決定重寫GTK#,而其餘代碼保持不變。今天,我意識到有些問題我沒有想到它們(使用與.NET等價的方法)。幸運的是,我處於開發的早期階段,所以我只會跳到Java。感謝您的答覆。 – Orvel

+0

這看起來不對:store.AppendValues(reader); – jstedfast

+0

您不想將閱讀器添加到樹視圖中,您可能需要添加該值。這可能解釋了爲什麼它不起作用。文本渲染器不知道如何渲染MySqlDataReader對象。 – jstedfast