我正在尝试使用System.ComponentModel
属性属性(例如[Browsable(true)]
)根据定义为Datasource
的{{1}}自动生成列,但我遇到了问题如何更改列类型而无需为每个数据集手动插入它们。示例如下:
测试表格:
BindingList<clsTestRow>
数据项:
public partial class Form1 : Form
{
public BindingList<clsTestRow> ds = new BindingList<clsTestRow>();
public Form1()
{
InitializeComponent();
this.dgvTester.AutoGenerateColumns = true;
this.dgvTester.DataSource = this.ds;
this.ds.Add(new clsTestRow(1, DateTime.Now));
this.ds.Add(new clsTestRow(2, DateTime.Now));
this.ds.Add(new clsTestRow(3, DateTime.Now));
this.ds.Add(new clsTestRow(4, DateTime.Now));
this.ds.Add(new clsTestRow(5, DateTime.Now));
this.ds.Add(new clsTestRow(6, DateTime.Now));
this.ds.Add(new clsTestRow(7, DateTime.Now));
this.ds.Add(new clsTestRow(8, DateTime.Now));
this.ds.Add(new clsTestRow(9, DateTime.Now));
this.ds.Add(new clsTestRow(10, DateTime.Now));
this.ds.Add(new clsTestRow(11, DateTime.Now));
}
private void Form1_Load(object sender, EventArgs e)
{
this.dgvTester.Refresh();
}
}
从this MSDN link拉出自定义列。
输出如下。这在编辑时缺少Date列中的日历控件,这是预期的,因为没有连接它的连接。我试图确定如何连接它而不必在每次分配public class clsTestRow
{
private int id = 0;
private DateTime date = DateTime.Now;
[Browsable(true)]
public int Id { get { return this.id; } set { this.id = value; } }
[Browsable(true)]
public DateTime Date { get { return this.date; } set { this.date = value; } }
public clsTestRow(int _id, DateTime _date)
{
this.id = _id;
this.date = _date;
}
}
值时手动应用模式因为我期望使用Datasource
值,所以有一些方法可以为字符串以外的类型修改它。