[Gtk-sharp-list] ComboBox with two columns
Madian
madian001 at gmail.com
Tue Sep 8 12:14:10 EDT 2009
Hi, everybody,
well at first let me say, that we must to understand how the combobox are
made ,
we have a list, and an entry(in ComboBoxEntry), a model,
To get data from some database or another kind of dataprovider you need at
first
to define what column or data will be displayed in the dropdown list
for example if have a simple table let's say Countries
Table Countries
Id Int
Name varchar(25)
I assume you wish to show Name column, ok?
so the TreeModel for your combo look's like this
TreeModel ComboData = new TreeModel(typeof (string), typeof (int));
Always, and i don't now why, but always the first column must to be a
string, the rest
of data types it doesn't mather.
Please se my sample down.
After, when you try to get the id, or value asosiated to the
item selected in the combobox
if(combo.GetActiveIter(out iter))
Console.WriteLine(combo.Model.GetValue(iter,1));
This is a simple Sub, that I made for to fill a combo with data
To do something like the DataSource property it does in the WindowsForm
public static void SetDataSource (string SQLQuery,
Gtk.ComboBoxEntry Combo)
{
//Here the origin of data are set
MySqlConnection Connection = new
MySqlConnection(DataBase.ConnectionString);
MySqlCommand Command = new MySqlCommand(SQLQuery);
MySqlDataReader DataReader;
try{
Connection.Open();
Command.Connection = Connection;
DataReader = Command.ExecuteReader();
if (DataReader.HasRows)
{//Declare a simple liststore
ListStore store = new ListStore(typeof (string),typeof(int));
//Fill the liststore
while (DataReader.Read())
store.AppendValues (DataReader.GetString(1),DataReader.GetInt32(0));
//Set this liststore as model of your combo
Combo.Model = store;
//this part it's optional if you wish to enable
search into the combo
Combo.Entry.Completion = new EntryCompletion();
Combo.Entry.Completion.Model = store;
Combo.Entry.Completion.TextColumn = 0;
}
DataReader.Close();
}
catch (MySqlException mex)
{
MsgBox.Show(mex.Message +
Environment.NewLine +
mex.Source +
Environment.NewLine +
mex.Number.ToString(),
MessageType.Error);
}
catch (Exception sex)
{
MsgBox.Show(sex.Message +
Environment.NewLine +
sex.Source +
Environment.NewLine,
MessageType.Error);
}
finally
{
Command.Dispose();
Command.Connection.Dispose();
}
}
I hope this could be helpful. any doubt, comment, please mail me.
--
View this message in context: http://www.nabble.com/ComboBox-with-two-columns-tp19953369p25349318.html
Sent from the Mono - Gtk# mailing list archive at Nabble.com.
More information about the Gtk-sharp-list
mailing list