2
好的,首先我有下面的代码工作..虽然我的问题是这样的;我应该像下面的例子那样编码combobox数据绑定,还是有更简单/更有效的方法?CSharp .NET 3.5 Windows Form DataBinding ComboBox to a List <>
首先,我需要操纵的结果从数据库返回到显示一个更具描述性的意义:
(我使用的基本类的键/值对)
class WashBayDesc
{
public string Key { get; set; }
public string Text { get; set; }
}
现在我从DataReader检索数据并执行操作,我需要它,然后将结果与列表项:
var washbaydata = new List<WashBayDesc>();
// Read through the available cashboxes and populate a list/combobox
while (rdr.Read())
{
string sWashBayDesc = null;
string sWB = rdr["washbay"].ToString();
if (sWB.StartsWith("3"))
{
sWashBayDesc = "Bay " + sWB.Substring(1);
}
else
{
sWashBayDesc = "Auto " + sWB.Substring(1);
}
washbaydata.Add(new WashBayDesc { Key = sWB, Text = sWashBayDesc });
}
// Now bind the hashtable (with our bay selectors) to the dropdown
cmbCashBoxes.DataSource = washbaydata;
cmbCashBoxes.ValueMember = "Key";
cmbCashBoxes.DisplayMember = "Text";
所以..这个想法是我可以简单的绑定组合框的数据源到washbaydata列表对象..这工作正常。
下一部分是检索选定的项目值(即不是文本描述,而是值或密钥本身)。这是我想也许是位不很看的权利,但它再次工程...
WashBayDesc myRes = new WashBayDesc();
myRes = (WashBayDesc)cmbCashBoxes.SelectedItem;
string sWashBayCashBox = myRes.Key;
所以结果是我的字符串sWashBayCashBox有选择的关键...
我想它的工作原理,那很好,但有没有更简单/更清洁的方式?
谢谢!优秀作品。所以我猜((字符串)铸造只是获取SelectedValue对象的第一个元素? 无论哪种方式,更简单,更清洁..再次感谢你! – 2009-12-10 01:03:31
我很高兴你喜欢它。 SelectedValue返回一个对象,这就是我们需要向下转换为字符串的原因。 – 2009-12-10 03:49:59