我正在尝试获取一列数据并将其填充到组合框中但无法使其工作。有人可以帮我解决这个问题吗?
代码:
test_DataEntities db = new test_DataEntities();
DataGrid test = new DataGrid();
test.ItemsSource = db.testTbls;
cmbWorkOrder.ItemsSource = test.Columns[2];
答案 0 :(得分:1)
您可以尝试:
cmbWorkOrder.ItemsSource = (test.ItemsSource as IEnumerable<testTblEntity>)
.Select(t => t.PropertyToDisplayInComboBox);
它返回IEnumerable<T>
,其中T
是要在组合框中显示的属性的类型(例如string
)。我希望绑定到test.ItemsSource
将执行查询以将实体从DB提取到内存中,然后绑定到cmbWorkOrder.ItemsSource
仅从内存中的集合中读取其数据并且不会数据库再次。当然,我不是。
修改强>
也许这有点清洁:
test_DataEntities db = new test_DataEntities();
DataGrid test = new DataGrid();
List<testTblEntity> list = db.testTbls.ToList(); // executes the query
test.ItemsSource = list;
cmbWorkOrder.ItemsSource = list.Select(t => t.PropertyToDisplayInComboBox);
当查询实际执行时,您现在可以控制。在第一个示例中,它将依赖于绑定引擎何时将绑定网格以及何时组合框可能取决于XAML中控件的顺序(假设它是WPF)。