在数据网格视图中显示 LiteDB 数据库项目
Showing LiteDB database items in data grid view
我正在使用 LiteDB。客户定义如下:
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
public string[] Phones { get; set; }
public string[] Cars { get; set; }
}
当我想在数据网格视图中显示我的数据时,只显示前两列,而数据网格视图不显示数组中的最后两列。
这是 GetAll
private List<Customer> GetAll()
{
var issuesToReturn = new List<Customer>();
try
{
using (var db = new LiteDatabase(Constants.ConnectionString))
{
var issues = db.GetCollection<Customer>("customers");
foreach (Customer issueItem in issues.FindAll())
{
issuesToReturn.Add(issueItem);
}
}
}
catch (Exception exp)
{
MessageBox.Show(exp.Message);
}
return issuesToReturn;
}
使用"Include"方法加载相关数据:
var issues = db.GetCollection("customers").Include(x => x.Phones).Include(x => x.Cars);
另请注意,WPF 中的 GridView 无法单独在一个单元格中显示数组。您需要手动添加列:https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview(v=vs.110).aspx
您可以尝试使用另一个字段来格式化网格中的数据(但不存储在数据文件中)。像这样:
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
public string[] Phones { get; set; }
public string[] Cars { get; set; }
[BsonIgnore]
public string DisplayPhones => string.Join(", ", Phones);
[BsonIgnore]
public string DisplayCars => string.Join(", ", Cars);
}
然后,更改您的网格以使用此 "Display" 属性映射您的列。
我正在使用 LiteDB。客户定义如下:
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
public string[] Phones { get; set; }
public string[] Cars { get; set; }
}
当我想在数据网格视图中显示我的数据时,只显示前两列,而数据网格视图不显示数组中的最后两列。
这是 GetAll
private List<Customer> GetAll()
{
var issuesToReturn = new List<Customer>();
try
{
using (var db = new LiteDatabase(Constants.ConnectionString))
{
var issues = db.GetCollection<Customer>("customers");
foreach (Customer issueItem in issues.FindAll())
{
issuesToReturn.Add(issueItem);
}
}
}
catch (Exception exp)
{
MessageBox.Show(exp.Message);
}
return issuesToReturn;
}
使用"Include"方法加载相关数据:
var issues = db.GetCollection("customers").Include(x => x.Phones).Include(x => x.Cars);
另请注意,WPF 中的 GridView 无法单独在一个单元格中显示数组。您需要手动添加列:https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview(v=vs.110).aspx
您可以尝试使用另一个字段来格式化网格中的数据(但不存储在数据文件中)。像这样:
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
public string[] Phones { get; set; }
public string[] Cars { get; set; }
[BsonIgnore]
public string DisplayPhones => string.Join(", ", Phones);
[BsonIgnore]
public string DisplayCars => string.Join(", ", Cars);
}
然后,更改您的网格以使用此 "Display" 属性映射您的列。