使用ComponentModel属性自动生成具有自定义DataGridViewColumn类型的DataGridView列?

时间:2016-05-18 18:49:38

标签: c# datagridview datagridviewcolumn system.componentmodel

我正在尝试使用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值,所以有一些方法可以为字符串以外的类型修改它。

Output lacking calendar control

0 个答案:

没有答案