c# - How to display data from a SQLite database into a GTK# TreeView? -
os: opensuse 11.4 ide: monodevelop 2.4.2 using gtk#
i need display datatable of sqlite database in simple grid view, in windowsforms'/wpf's datagridview, gtk#. have been trying configure gtk.treeview display data properly, no luck. data not displayed , obscure error in application output. here code:
type[] types; sqlitecommand cmd = new sqlitecommand("select * "+tables.users, _cddapconn); cmd.connection.open(); sqlitedatareader reader = cmd.executereader(); types = new type[reader.fieldcount]; for(int = 0; < types.length; i++) types[i] = typeof(string); gtk.liststore list = new gtk.liststore(types); for(int = 0; < 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();
i followed example given here: http://www.mono-project.com/gtksharp_treeview_tutorial. first create model (liststore) initializing string type data of every column. append columns of data table tree view. engage sqlite reader, , every entry add data model. add cell each column pointing data. finally, give tree view model.
however, manages display columns no data. in application output this:
gtk-critical **: gtk_tree_view_column_cell_layout_add_attribute: assertion `info != null' failed
i spent few hours looking information problem no success. surprising found no examples of treeview being used in mono display data database, or documentation on gtk# matter.
how can make grid view work? need display data , accept row selections (so can check id column of selected row).
i saw same you, following gtksharp treeview tutorial gives exact same assertion , no data in tree. think assert red herring. in case, got aiming following code.
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" ); }
Comments
Post a Comment