Sal*_*leh 4 c# combobox entity-framework
我有这个代码:
private void FillCombobox()
{
using (InventoryEntities c = new InventoryEntities(Properties.Settings.Default.Connection))
{
List<Customer> usepurposes = c.Customers.ToList();
DataTable dt = new DataTable();
dt.Columns.Add("id");
dt.Columns.Add("name");
foreach (Customer usepurpose in usepurposes)
{
dt.Rows.Add(usepurpose.id, usepurpose.name);
}
comboBox1.ValueMember = dt.Columns[0].ColumnName;
comboBox1.DisplayMember = dt.Columns[1].ColumnName;
comboBox1.DataSource = dt;
}
}
Run Code Online (Sandbox Code Playgroud)
我将此方法称为:
private void frmBillIn_Load(object sender, EventArgs e)
{
FillCombobox();
}
Run Code Online (Sandbox Code Playgroud)
当我运行我的应用程序时,组合框将不会显示客户(项目).
只显示Model.Customer
问题是什么??
我尝试了很多解决方案,但没有解决方案.
您不必混合两个世界,实体框架的世界和DataSet的世界.直接绑定:
using (InventoryEntities c = new InventoryEntities(Properties.Settings.Default.Connection))
{
comboBox1.DataSource = c.Customers;
comboBox1.ValueMember = "id";
comboBox1.DisplayMember = "name";
}
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,那么列名可能与"name"("Name"或许?)不同.
如果使用"using",则需要在关闭连接之前放置ToList()以进行求值.使用ItemsSource,ValueMember和DisplayMember区分大小写
using (InventoryEntities c = new InventoryEntities())
{
comboBox1.ItemsSource = c.Customers.toList();
comboBox1.ValueMemberPath = "Id";
comboBox1.DisplayMemberPath = "Name";
}
Run Code Online (Sandbox Code Playgroud)
希望这有帮助.
归档时间: |
|
查看次数: |
21169 次 |
最近记录: |