我有一个DataTable来自一个Web服务,我需要绑定到一个ComboBox。我没有在XAML中进行绑定,所以这个问题是关于代码中的绑定。到目前为止,我已经尝试在代码中设置DisplayMemberPath和SelectedValue代码
cboManager.DataContext = Slurp.DistrictManagerSelect().DefaultView;
cboManager.DisplayMemberPath = "Name";
cboManager.SelectedValuePath = "NameListId";
cboManager.SetBinding(ComboBox.ItemsSourceProperty, new Binding());
我试图
DataTable tbl = new DataTable();
tbl = Slurp.DistrictManagerSelect();
cboManager.ItemsSource = ((IListSource)tbl).GetList();
cboManager.DisplayMemberPath = "[Name]";
cboManager.SelectedValuePath = "[NameListId]";
DataContext = this;
在这两种情况下,我得到经理的名单显示,但是当我从下拉框中选择,我得到[名称]和[NameListId]而不是我期待的价值观。我做错了什么(除了不使用XAML的DataBinding)?
编辑添加的答案后,我原来的职位排在
左右(根据Rachel的响应)尽量第三看起来像这样:
using (DataTable tbl = Slurp.DistrictManagerSelect())
{
List<ManagerList> list = new List<ManagerList>();
foreach (var row in tbl.Rows)
{
list.Add(new ManagerList
{
NameListId = (int)row[0],
Name = row[1].ToString()
});
}
}
假设我在做什么,她指正确的方式我没有得到这个错误不能用[]对'object'类型的表达式进行索引
瑞秋我需要你的答案一些澄清。我有没有正确的想法(我添加了编辑)?我需要做些什么来完成这项工作? – 2011-12-28 18:01:27
@BukHix从你的'DisplayMemberPath'和'SelectedValuePath'中删除方括号。我最好的猜测是错误来自试图绑定到'ManagerList [Name]',这是无效的。您希望它绑定到'ManagerList.Name'。 – Rachel 2011-12-28 18:08:08
我得到这两行上的错误NameListId =(int)row [0]和Name = row [1] .ToString(),所以我甚至没有到Manager.List进来的地步。目前唯一的我正在使用的代码是在编辑中发布的内容(我删除了DisplayMember和SelectedValue路径)。 – 2011-12-28 18:41:06