我有一個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