【问题标题】:C#: Adding Columns To Bound DatagridView With CodeC#:使用代码将列添加到绑定 DatagridView
【发布时间】:2010-04-15 20:56:55
【问题描述】:

// 从这个 Admin 类获取数据:

public static IQueryable<Student> GetStudents()
{
    DojoDBDataContext conn = new DojoDBDataContext();

    var query =
        from s in conn.Students
        join b in conn.Belts on s.BeltID equals b.ID
        orderby s.LastName ascending
        select s;

    return query;
}

// 在我的表单上:

BindingSource bs = new BindingSource();

    private void fillStudentGrid()
    {
        bs.DataSource = Admin.GetStudents();
        dgViewStudents.DataSource = bs;
        dgViewStudents.Columns.Remove("ID");
    }

工作得很好,但与其删除我不想要的 20 多列数据,我宁愿只添加我需要的少数数据。另外,命名标题标题是一种奖励。但是,add 方法对我不起作用:

private void fillStudentGrid()
{
    bs.DataSource = Admin.GetStudents();

    dgViewStudents.AutoGenerateColumns = false;
    dgViewStudents.DataSource = bs;
    dgViewStudents.Columns.Add("ID", "ID Number");
}

我得到了适当的行数,并且列标题设置正确...但是行中填充了空白数据。

【问题讨论】:

  • 实际上,即使使用第一个 fillStudentGrid() 代码,它也无法正常工作,它不会从 conn.Belts 返回属性。嗬!我可以使用 lambda 将 linq 查询放入表单中,但我试图将数据逻辑分开。

标签: c# winforms linq datagridview bindingsource


【解决方案1】:

您没有看到任何数据的原因是您实际上没有将列绑定到任何东西。所需的行数由绑定决定,并且网格知道如果有任何列,则每个数据项需要一行,但没有列它什么也不显示。添加新列时,它将出现在所有行中,但不会自动绑定到您的数据源。为此,您需要先在列上设置 DataPropertyName,然后再将其添加到集合中:

bs.DataSource = Admin.GetStudents();
dgViewStudents.AutoGenerateColumns = false;
dgViewStudents.DataSource = bs;

DataGridViewColumn col = new DataGridViewTextBoxColumn();
col.DataPropertyName = "ID";
col.HeaderText = "ID Column";
col.Name = "foo";
dgViewStudents.Columns.Add(col);

【讨论】:

    【解决方案2】:

    学生班级的属性也可以这样重新设计。使用 browsable false 选项,您不需要删除 gridview 列。

        using System.ComponentModel;
    
        [Browsable(false)]
        [Description("Öğrenci kayıt numarası")]
        [DisplayName("Öğrenci Kayıt No")]
        public int StudentID { get; set; }
    

    【讨论】:

      【解决方案3】:

      您也可以在查询中添加列,即使它们不存在。

      例如:从 table_name 中选择employeeID, empname, 0 作为薪水

      并将其绑定到您的 datagridview。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-06
        • 2020-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多