【发布时间】:2011-04-28 21:13:40
【问题描述】:
操作系统:openSuse 11.4 IDE:MonoDevelop 2.4.2 使用 GTK#
我需要在一个简单的网格视图中显示 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
我花了几个小时寻找有关此问题的任何信息,但没有成功。令人惊讶的是,我没有发现在 mono 中使用树视图来显示来自数据库的数据的示例,或者关于 gtk# 的任何文档。
如何使我的网格视图正常工作?我真的只需要它来显示数据并接受行选择(这样我就可以检查所选行的 ID 列)。
【问题讨论】:
标签: c# mono monodevelop gtk#