OS:OpenSUSE 11.4中 IDE:MonoDevelop的2.4.2 使用GTK#如何將數據從SQLite數據庫顯示到GTK#TreeView中?
我需要一個簡單的網格視圖中顯示SQLite數據庫的數據表,很像WindowsForms'/WPF的datagridview的,但GTK# 。 我一直在嘗試配置GTK.TreeView以正確顯示數據,但沒有運氣。數據不會顯示,並在應用程序輸出中出現一個模糊的錯誤。這裏是我的代碼:
Type[] types;
SqliteCommand cmd = new SqliteCommand("SELECT * FROM "+Tables.USERS, _cddapConn);
cmd.Connection.Open();
SqliteDataReader reader = cmd.ExecuteReader();
types = new Type[reader.FieldCount];
for(int i = 0; i < types.Length; i++)
types[i] = typeof(string);
Gtk.ListStore list = new Gtk.ListStore(types);
for(int i = 0; i < TblUsers.SCHEMA.Length; i++)
{
table.AppendColumn(TblUsers.SCHEMA[i], new Gtk.CellRendererText(), "text");
}
while(reader.Read())
{
String[] rowData = new String[TblUsers.SCHEMA.Length];
for(int index = 0; index < TblUsers.SCHEMA.Length; index++)
{
rowData[index] = reader.GetString(index);
table.Columns[index].AddAttribute(new Gtk.CellRendererText(), "text", index);
}
list.AppendValues(rowData);
}
table.Model = list;
reader.Close();
cmd.Connection.Close();
我遵循這裏給出的例子:http://www.mono-project.com/GtkSharp_TreeView_Tutorial。 首先,我通過使用每列的數據的字符串類型初始化它來創建模型(ListStore)。然後我將數據表的列添加到樹視圖。然後,我參與了sqlite閱讀器,併爲每個條目添加其數據到模型。然後,我爲每列指向數據添加一個單元格。最後,我給樹視圖的模型。
但是,這隻能顯示沒有數據的列。我得到了應用程序的輸出是這樣的:
Gtk-CRITICAL **: gtk_tree_view_column_cell_layout_add_attribute: assertion `info != NULL' failed
我花了幾個小時尋找關於這個問題沒有成功的任何信息。令人驚訝的是,我沒有發現樹形視圖在單聲道中用來顯示數據庫中的數據或關於gtk#的任何文檔的例子。
如何讓我的網格視圖工作?我真的只需要它顯示數據並接受行選擇(以便我可以檢查所選行的ID列)。
啊謝謝你指出,我沒有粘貼該線由於某種原因。現在修復。 – Kiril 2011-04-28 22:14:39
也許每行做一次AddAttribute而不是做一次就有問題了? – jpobst 2011-04-29 02:21:21