mdv*_*sta 4 c# linq datagridview bindingsource winforms
//从此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;
}
Run Code Online (Sandbox Code Playgroud)
//在我的表格上:
BindingSource bs = new BindingSource();
private void fillStudentGrid()
{
bs.DataSource = Admin.GetStudents();
dgViewStudents.DataSource = bs;
dgViewStudents.Columns.Remove("ID");
}
Run Code Online (Sandbox Code Playgroud)
工作完全正常,但我不想删除我不想要的20多列数据,而是只添加我做的几个.此外,获得标题标题的名称是一个奖励.但是,add方法对我不起作用:
private void fillStudentGrid()
{
bs.DataSource = Admin.GetStudents();
dgViewStudents.AutoGenerateColumns = false;
dgViewStudents.DataSource = bs;
dgViewStudents.Columns.Add("ID", "ID Number");
}
Run Code Online (Sandbox Code Playgroud)
我得到适当的行数,列标题设置正确...但行填充空白数据.
您没有看到任何数据的原因是您实际上没有将列绑定到任何内容.所需行的数量由绑定确定,并且网格知道如果有任何列,则每个数据项需要一行,但没有列则不显示任何列.添加新列时,它将显示在所有行中,但它不会自动绑定到您的数据源.为此,您需要在将列添加到集合之前在列上设置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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28363 次 |
| 最近记录: |