我必须为用户提供从项目列表中进行选择的选项,然后,等待他们选择的单个项目,我需要从该项目获取guid。这将从Sql表中的Linq查询中填充。
我从这开始:
private void PopulateGatewayList()
{
var gateways = from gw in _entities.Gateways
where gw.IsActive
select gw;
foreach (var gateway in gateways)
{
checkedListBox_Gateways.Items.Add(gateway.Name);
}
}
但是一旦他们检查了什么,我就无法抓住guid。
给用户起名字的好方法是什么,但是给我回guid?
**答案**
使用Michael Yoon的帮助,我做了以下事情:
private void PopulateGatewayList()
{
var gateways = from gw in _entities.Gateways
where gw.IsActive
select gw;
foreach (var gateway in gateways)
{
checkedListBox_Gateways.Items.Add(new ListItem(gateway.Name, gateway.GatewayId.ToString()));
//checkedListBox_Gateways.Items.Add(gateway.Name);
}
}
private void checkedListBox_Gateways_SelectedIndexChanged(object sender, EventArgs e)
{
foreach (Object selecteditem in checkedListBox_Gateways.SelectedItems)
{
var strItem = selecteditem as ListItem;
Console.WriteLine("Selected: " + strItem.Value);
}
}
答案 0 :(得分:1)
您需要将对象添加到包含id和字符串的集合中。您可以使用KeyValuePair或自己创建。我将在我的例子中使用keyvaluepair。
checkedListBox_Gateways.DisplayMember = "Key";
checkedListBox_Gateways.ValueMember = "Value";
checkedListBox_Gateways.Items.Add(new KeyValuePair<string, string>(gateway.Name, gateway.Id.ToString()));
然后你可以枚举SelectedItems集合,将每个集合强制转换为keyvaluepair并从中获取值。