una tamaño quitar primera ocultar fila eliminar como columnas columna cambiar asp ancho c# .net datagrid datagridview datagridviewcolumn

c# - tamaño - ¿Cómo ocultar la columna de DataGridView cuando se usa DataSource personalizado?



ocultar columna gridview c# asp (6)

Debe ocultar la columna en el control de vista de cuadrícula en lugar de en la fuente de datos. Al ocultarlo en la fuente de datos, no aparecerá en la vista de cuadrícula, por lo tanto, no podrá acceder al valor en la vista de cuadrícula. Si lo hace de la manera que sugiere, tendría que acceder al valor de la columna a través de la fuente de datos en lugar de a la vista de la cuadrícula.

Para ocultar la columna en el control de vista de cuadrícula, puede usar un código como este:

dataGridView1.Columns[0].Visible = false;

Para acceder a la columna desde la fuente de datos, puede intentar algo como esto:

object colValue = ((DataTable)dataGridView.DataSource).Rows[dataSetIndex]["ColumnName"];

Tengo una pequeña aplicación en c #, tiene un DataGridView que se llena usando:

grid.DataSource = MyDatasource array;

MyClass mantiene la estructura para las columnas, se ve algo como esto:

class MyDatasource { private string column1; private string column2; public MyDatasource(string arg1, string arg2) { this.column1 = arg1; this.column2 = arg2; } public string column1 { get { return this.column1; } set { this.column1 = value; } } public string column2 { get { return this.column2; } set { this.column1 = value; } } }

Todo funciona bien y DataGridView se completa con los datos correctos, pero ahora quiero ocultar la columna2. Traté de agregar [Browsable(false)] sobre la declaración de la columna, que lo ocultará, pero también necesito acceder al valor de la columna desde el código, y cuando uso [Browsable(false)] y trato de leer el contenido, actúa como si la columna no existe Si no lo uso, puedo leer la columna sin problema, pero está visible en DataGridView.

¿Cómo podría ocultar la columna pero aún así poder leer su contenido desde el código?


Establecer la propiedad Visible esa columna en particular = false

dataGridView[ColumnName or Index].Visible = false;

Editar lo siento perdido la Columns Propiedad dataGridView.Columns[ColumnName or Index].Visible = false;


No estoy seguro si es demasiado tarde, pero el problema es que no puede establecer las columnas en modo de diseño si está vinculando en tiempo de ejecución. Por lo tanto, si está vinculando en tiempo de ejecución, continúe y elimine las columnas del modo de diseño y hacerlo pragmáticamente

ex..

if (dt.Rows.Count > 0) { dataGridViewProjects.DataSource = dt; dataGridViewProjects.Columns["Title"].Width = 300; dataGridViewProjects.Columns["ID"].Visible = false; }


En algunos casos, puede ser una mala idea agregar primero la columna a DataGridView y luego ocultarla.

Por ejemplo, tengo una clase que tiene un proxy NHibernate para una propiedad de imagen para los logotipos de la empresa. Si accedía a esa propiedad (por ejemplo, llamando a su método ToString para mostrarlo en un DataGridView), descargaría la imagen del servidor SQL. Si tuviera una lista de objetos de la Compañía y la utilizara como DataSource de DataGridView así, entonces (sospecho) que descargaría TODOS los logos ANTES de que pudiera ocultar la columna.

Para evitar esto, utilicé el atributo personalizado

[System.ComponentModel.Browsable(false)]

en la propiedad de la imagen, por lo que DataGridView ignora la propiedad (no crea la columna y no llama a los métodos ToString).

public class Company { ... [System.ComponentModel.Browsable(false)] virtual public MyImageClass Logo { get; set;}


Yo tuve el mismo problema

Aquí está la Solución que podría funcionar para usted. Funcionó para mí

GridView1.DataBind(); if (GridView1.Columns.Count > 0) GridView1.Columns[0].Visible = false; else { GridView1.HeaderRow.Cells[0].Visible = false; foreach (GridViewRow gvr in GridView1.Rows) { gvr.Cells[0].Visible = false; } }


Me he dado cuenta de que si se utiliza a tiempo, se vuelve incompleto (toda la forma simplemente no "pinta" nada) si se usa antes de panel1.Controls.Add(dataGridView); then dataGridView.Columns["ID"].Visible = false; romperá toda la forma y la dejará en blanco, por lo tanto, para rodear esa configuración, DESPUÉS DE EG:

panel1.Controls.Add(dataGridView); dataGridView.Columns["ID"].Visible = false; //works dataGridView.Columns["ID"].Visible = false; panel1.Controls.Add(dataGridView); //fails miserably