4

// この 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");
}

適切な数の行を取得し、列のタイトルは正しく設定されています...しかし、行は空白のデータで埋められています。

4

3 に答える 3

8

データが表示されない理由は、実際には列を何にもバインドしていないためです。必要な行の数はバインディングによって決定され、グリッドは、列がある場合はデータ項目ごとに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);
于 2010-04-15T23:33:42.217 に答える
0

列が存在しない場合でも、クエリに列を追加することもできます。

例: table_name から給与として employeeID、empname、0 を選択します

これをデータグリッドビューにバインドします。

于 2016-12-08T04:22:47.223 に答える