ОС: openSuse 11.4 IDE: MonoDevelop 2.4.2 с использованием GTK #
Мне нужно отобразить данные базы данных sqlite в простом представлении сетки, как в представлении данных WindowsForms / WPF, но с 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 # по этому вопросу.
Как я могу заставить мой вид сетки работать?Мне действительно нужно только отображать данные и принимать выбор строк (чтобы я мог проверить столбец идентификатора выбранной строки).