I need to display the datatable of a sqlite database in a simple grid view,
much like in WindowsForms'/WPF's datagridview, but with GTK#. I have been
trying to configure the GTK.TreeView to display the data properly, but with
no luck. The data is not displayed and I get an obscure error in the
Application output. I find it extremely strange that there is no
documentation on the subject. 
I followed the example given here:
http://www.mono-project.com/GtkSharp_TreeView_Tutorial. First I create the
model (ListStore) by initializing it with the string type for the data of
every column. Then I append the columns of the data table to the tree view.
Then I engage the sqlite reader, and for every entry I add its data to the
model. Then I add a cell for each column pointing to the data. Finally, I
give the tree view its model.

However, this only manages to display the columns with no data. What I get
in the application output is this:
Gtk-CRITICAL **: gtk_tree_view_column_cell_layout_set_cell_data_func:
assertion `info != NULL' failed

Here is my code:

public void SetupUsers(Gtk.TreeView table)
                {
                        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 < TblExaminees.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].SetCellDataFunc(new Gtk.CellRendererText(), new
Gtk.TreeCellDataFunc(renderExaminee));
                                        
                                }
                                list.AppendValues(rowData);
                        
                                
                        }
                        table.Model = list;
                        reader.Close();
                        cmd.Connection.Close();
                        
                }
                
                protected void renderUser(Gtk.TreeViewColumn column, 
Gtk.CellRenderer
cell, Gtk.TreeModel model, Gtk.TreeIter iter)
                {
                        Console.WriteLine("got here");
                        (cell as Gtk.CellRendererText).Text = 
(string)model.GetValue(iter,
Array.FindIndex(TblUsers.SCHEMA, item => item == column.Title ));
                }
I appreciate your help. 

P.S. I have tried to use table.Columns[index].AddAttribute(new
Gtk.CellRendererText(), "text", index); instead of setting the data func,
which just returns this similar error: Gtk-CRITICAL **:
gtk_tree_view_column_cell_layout_add_attribute: assertion `info != NULL'
failed

--
View this message in context: 
http://mono.1490590.n4.nabble.com/How-to-display-data-from-a-SQLite-database-into-a-GTK-TreeView-tp3482522p3482522.html
Sent from the Mono - Gtk# mailing list archive at Nabble.com.
_______________________________________________
Gtk-sharp-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/gtk-sharp-list

Reply via email to