//从此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");
}
我获得了适当的行数,并且列标题设置正确...但行中都填充了空白数据。
答案 0 :(得分:8)
您没有看到任何数据的原因是您实际上没有将列绑定到任何内容。所需行的数量由绑定确定,并且网格知道如果有任何列,则每个数据项需要一行,但没有列则不显示任何列。添加新列时,它将显示在所有行中,但它不会自动绑定到您的数据源。为此,您需要在将列添加到集合之前在列上设置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);
答案 1 :(得分:0)
学生类属性也可以像这样重新设计。使用可浏览的false选项,您无需删除gridview列。
using System.ComponentModel;
[Browsable(false)]
[Description("Öğrenci kayıt numarası")]
[DisplayName("Öğrenci Kayıt No")]
public int StudentID { get; set; }
答案 2 :(得分:0)
您也可以在查询中添加列,即使这些列不存在。
例如:选择employeeID,empname,0作为table_name的薪水
并将其绑定到您的datagridview。