por - C#: Agregar columnas para enlazar DatagridView con código
obtener nombre de columna datagridview c# (3)
// Obtener datos de esta clase de administrador:
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;
}
// Y en mi formulario:
BindingSource bs = new BindingSource();
private void fillStudentGrid()
{
bs.DataSource = Admin.GetStudents();
dgViewStudents.DataSource = bs;
dgViewStudents.Columns.Remove("ID");
}
Funciona perfectamente bien, pero en lugar de eliminar más de 20 columnas de datos que no quiero, prefiero agregar los pocos que hago. Además, obtener el nombre de los títulos del encabezado es una ventaja. Pero, el método de agregar no funciona para mí:
private void fillStudentGrid()
{
bs.DataSource = Admin.GetStudents();
dgViewStudents.AutoGenerateColumns = false;
dgViewStudents.DataSource = bs;
dgViewStudents.Columns.Add("ID", "ID Number");
}
Obtengo el número apropiado de filas y el título de la columna se establece correctamente ... pero las filas están llenas de datos en blanco.
La razón por la que no ve datos es que no ha vinculado la columna a nada. El número de filas necesarias está determinado por el enlace, y la cuadrícula sabe que, si hay columnas, necesita una fila por elemento de datos, pero sin columnas no muestra nada. Cuando agrega la nueva columna, aparecerá en todas las filas, pero no se enlaza automáticamente a su origen de datos. Para hacerlo, debe establecer DataPropertyName en la columna antes de agregarlo a la colección:
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);
Las propiedades de la clase del alumno también se pueden rediseñar así. Con la opción de búsqueda falsa no es necesario eliminar la columna de la vista de cuadrícula.
using System.ComponentModel;
[Browsable(false)]
[Description("Öğrenci kayıt numarası")]
[DisplayName("Öğrenci Kayıt No")]
public int StudentID { get; set; }
También puede agregar columnas a su consulta incluso cuando no estén presentes.
por ejemplo: select employeeID, empname, 0 como salario de table_name
y enlazado esto a su vista de cuadro de datos.