DataGridView 绑定到对象的 "ToString" 属性
DataGridView binding to an object's "ToString" property
我正在将对象列表绑定到 Winform DataGridView。这很好用,我的对象上的每个 属性 都有一列。我现在已经覆盖了基于属性输出文本的对象上的“ToString”。我现在想更改我的 DataGridView,以便它有一个绑定到我的对象的“ToString”属性 的列。请问这样可以吗,目前我还没找到方法
据我所知,绑定适用于属性,因此您需要在 class 中创建 属性,这将 return ToString()
的结果:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Text { get { return ToString(); } }
public override string ToString()
{
return String.Format("{0}, {1} years", Name, Age);
}
}
这是一种强制网格不为除 Text
属性:
之外的任何内容创建列的方法
grid.Columns.Add(new DataGridViewTextBoxColumn() {DataPropertyName = "Text", HeaderText = "Custom ToString value"});
grid.AutoGenerateColumns = false;
绑定:
var people = new List<Person>()
{
new Person() {Name = "A", Age = 20},
new Person() {Name = "B", Age = 30},
};
grid.DataSource = people;
我按照这个 link 设法解决了这个问题:Binding List Of String
解决方案是包装每个字符串,以便绑定机制知道要绑定什么。
我正在将对象列表绑定到 Winform DataGridView。这很好用,我的对象上的每个 属性 都有一列。我现在已经覆盖了基于属性输出文本的对象上的“ToString”。我现在想更改我的 DataGridView,以便它有一个绑定到我的对象的“ToString”属性 的列。请问这样可以吗,目前我还没找到方法
据我所知,绑定适用于属性,因此您需要在 class 中创建 属性,这将 return ToString()
的结果:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Text { get { return ToString(); } }
public override string ToString()
{
return String.Format("{0}, {1} years", Name, Age);
}
}
这是一种强制网格不为除 Text
属性:
grid.Columns.Add(new DataGridViewTextBoxColumn() {DataPropertyName = "Text", HeaderText = "Custom ToString value"});
grid.AutoGenerateColumns = false;
绑定:
var people = new List<Person>()
{
new Person() {Name = "A", Age = 20},
new Person() {Name = "B", Age = 30},
};
grid.DataSource = people;
我按照这个 link 设法解决了这个问题:Binding List Of String
解决方案是包装每个字符串,以便绑定机制知道要绑定什么。