Nie znam C#, w ogóle jakoś obiektowe języki nie przemawiają do mnie :)
Analizując treść linka, który podałeś uważam, że jest możliwość dodania danych np. integer, sprawdź:
Gtk.ListStore dane = new Gtk.ListStore (typeof(string),typeof (int));
dane.AppendValues ("ID", 1);
W C jest możliwość dodania do modelu "nadmiarowych" danych, które nie są interpreterowane bezpośrednio przez GtkTreeView:
enum
{
TEKST = 0,
LICZBA,
COMBO,
CHECK
};
GtkTreeStore * magazyn_drzewa;
GtkTreeIter rodzic, potomek;
magazyn_drzewa = gtk_tree_store_new( ILOSC_KOLUMN, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT ); /* ILOSC_KOLUMN = 3 (ilosc kolum w modelu, nie w GTkTreeView) */
/* Tworzy pusty węzeł bez potomka */
gtk_tree_store_append( magazyn_drzewa, & rodzic, NULL );
/* Wypełnia danymi stworzony węzeł */
gtk_tree_store_set( magazyn_drzewa, & rodzic, 0, "1_Dana_w_kolumnie_1", 1, "1_Dana_w_kolumnie_2", 2, TEKST, - 1 );
/* Tworzy pusty węzeł bez potomka */
gtk_tree_store_append( magazyn_drzewa, & rodzic, NULL );
/* Wypełnia danymi stworzony węzeł */
gtk_tree_store_set( magazyn_drzewa, & rodzic, 0, "2_Dana_w_kolumnie_1", 1, "2_Dana_w_kolumnie_2", 2, COMBO, - 1 );
/* Tworzy pusty węzeł bez potomka */
gtk_tree_store_append( magazyn_drzewa, & rodzic, NULL );
/* Wypełnia danymi stworzony węzeł */
gtk_tree_store_set( magazyn_drzewa, & rodzic, 0, "3_Dana_w_kolumnie_1", 1, "3_Dana_w_kolumnie_2", 2, CHECK, - 1 );
Trzecią kolumne nie wiąże się z wyświetlaniem w GtkTreeView, można ją później wykorzystać w setCellDataFunc do odpowiedniego wyświetlania zawartości.
Tutaj http://cpp0x.pl/kursy/Kurs-GTK+-C++/GtkTreeView/447 masz moje wypociny na temat GtkTreeView i magazynie danych w C, być może Ci się przyda.