gpt4 book ai didi

c# - 如何将 SQLite 数据库中的数据显示到 GTK# TreeView 中?

转载 作者:太空宇宙 更新时间:2023-11-03 11:37:18 24 4
gpt4 key购买 nike

操作系统:openSuse 11.4集成开发环境:MonoDevelop 2.4.2使用 GTK#

我需要在一个简单的 GridView 中显示 sqlite 数据库的数据表,很像在 WindowsForms/WPF 的数据 GridView 中,但使用 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)。然后我将数据表的列附加到 TreeView 。然后我使用 sqlite 阅读器,对于每个条目,我都将其数据添加到模型中。然后我为指向数据的每一列添加一个单元格。最后,我为 TreeView 提供了模型。

但是,这只能设法显示没有数据的列。我在应用程序输出中得到的是这样的:

Gtk-CRITICAL **: gtk_tree_view_column_cell_layout_add_attribute: assertion `info != NULL' failed

我花了几个小时寻找有关此问题的任何信息,但没有成功。令人惊讶的是,我没有发现在 mono 中使用 treeview 来显示数据库数据的示例,也没有发现任何有关 gtk# 的文档。

如何让我的 GridView 工作?我真的只需要它来显示数据和接受行选择(这样我就可以检查所选行的 ID 列)。

最佳答案

我看到和你一样的,跟随GtkSharp TreeView Tutorial给出完全相同的断言并且树中没有数据。我认为 Assert 是一条红鲱鱼。无论如何,我通过以下代码得到了您的目标。

  ListStore SetupModel( TreeView tv ){
var m = new ListStore(typeof(string),typeof(string));

var nameCol = new TreeViewColumn( "Name",
new CellRendererText(), "text", 0 );
tv.AppendColumn( nameCol );

var colourCol = new TreeViewColumn( "Colour",
new CellRendererText(), "text", 1 );
tv.AppendColumn( colourCol );

tv.Model = m;
return m;
}

void PopulateData( ListStore model ) {
model.AppendValues( "Fred", "Blue" );
model.AppendValues( "Bob", "Green" );
model.AppendValues( "Mary", "Yellow" );
model.AppendValues( "Alice", "Red" );
}

关于c# - 如何将 SQLite 数据库中的数据显示到 GTK# TreeView 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5825104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com