This is not how you bind comboboxes in .NET.
You should do something like this:
SqlCommand getMainCategoryName = new SqlCommand("SELECT * FROM maincategory", sc);
DataSet ds = new DataSet;
SqlDataAdapter da = new sqlDataAdapter;
da.SelectCommand = getMainCategoryName ;
da.Fill(ds);
cboMainCategoriesDisplayMember = "maincategory_name";
cboMainCategories.ValueMember = "maincategory_id"
cboMainCategories.DataSource = ds;
Note that control names are now non-default meaningful names. I've named variables as I prefer, you can keep yours of course :). I would suggest you change your id fields to integer, but again, your choice. It helps with sorting by ID and joins are faster.
You can write dr2["maincategory_id"].ToString(); to get the string out of the column.