Jim,
The dropdown control can take a ListViewItem object as a parameter to the
Items.Add() method but it only uses the Text property when adding it. The
ListViewItem is only full used by ListBox class.
I'm not sure why you are trying to use binding instead of a loop with calls
the DropDownList.Add() method but, keep in mind the nature of binding. All
objects can be bound to most controls, however some controls simply call the
ToString() method if the object does not support the IEnumarable interface.
Simply put the most common use of binding is to set the DataSource property
to a collection or array. Then set the other Data...Field propertys with
the field names. Then when the DataBind() method is called the control loops
through the DataSource object using the IEnumerable interface and uses
reflection to load the control with the Data Fields specified.
Note: Binding is always slower than Adds due to the use of reflection.
With that said, since a Hashtable class supports the IEnumerable interface
you can do the following: Set the DropDownList.DataSource property to the
Hashtable object, Set the DropDownList.DataTextField property to "Value" as
in the IDictionaryEnumerator.Value, Set the DropDownList.DataValueField
property to "Key" as in the IDictionaryEnumerator.Key.
One thing of note is that when loading the Value object, from the Hashtable,
will have it's ToString() method called. This is why when you bound the
ListViewItem, you saw the text you did.
For more information on C# Controls look at the MSDN help and look for the
"DropDownList class" and the "Hashtable class" in the index. Each method
and property are described in detail.
A little long winded but hope this helps.