Tengo una vista de cuadrícula que usa columnas autogeneradas, porque el usuario puede seleccionar las columnas para devolver en una consulta. Quiero ocultar la columna con la identidad. ¿Cómo oculto la columna autogenerada? Incluso en el evento de databound, las columnas cuentan como cero.Ocultar columna autogenerada en Gridview
Respuesta
he descubierto cómo hacer esto. Necesita usar el evento rowdatabound y ocultar la celda cuando la fila está enlazada.
Protected Sub ResultGrid_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles ResultGrid.RowDataBound
e.Row.Cells(1).Visible = False
End Sub
Verificaría que la columna fuera mayor que cero, de ser así, utilizaría el hecho de que la colección de columnas puede referenciarse por nombre de columna así como también por enteros para ocultar la columna de identidad.
¿Lo necesita? Lo más simple sería no incluirlo en la consulta de selección.
Si lo necesita y conoce la posición de la columna:
gridView.Columns[KnownColumnIndex].Visible = false;
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
e.Row.Cells[1].Visible = false;
}
he hackeado en torno al tema con la siguiente. Escribí funciones de ayuda para darme el índice de columna correcto y luego para ocultar la columna deseada. Una vez que las funciones auxiliares están en su lugar, simplemente se llama al trazador de líneas de la función gridview_databound.
protected void grd_DataBound(object sender, EventArgs e)
{
try
{
HideAutoGeneratedGridViewColumn(grd, "nContractID");
}
catch (Exception ex)
{
}
}
public int getColumnIndex(GridView grd, string sColumnName)
{
return getColumnIndex(grd, sColumnName, false);
}
/// <summary>
/// Returns the columns index of the specified column based on the header text.
/// </summary>
/// <param name="grd"></param>
/// <param name="sColumnName"></param>
/// <returns></returns>
public int getColumnIndex(GridView grd, string sColumnName, bool bAutoGeneratedColumn)
{
int ReturnVal = -1;
try
{
if (grd != null)
{
if (!bAutoGeneratedColumn)
{
#region Static Columns
if (grd.Columns.Count > 0)
{
for (int x = 0; x < grd.Columns.Count; x++)
{
if (grd.Columns[x] != null)
{
if (grd.Columns[x].HeaderText.ToLower() == sColumnName.ToLower())
{
ReturnVal = x;
break;
}
}
}
}
#endregion
}
else
{
#region AutoGenerated Columns
if (grd.HeaderRow != null)
{
for (int x = 0; x < grd.HeaderRow.Cells.Count; x++)
{
if (grd.HeaderRow.Cells[x] != null)
{
if (grd.HeaderRow.Cells[x].Text.ToLower() == sColumnName.ToLower())
{
ReturnVal = x;
break;
}
}
}
}
#endregion
}
}
}
catch (Exception ex)
{
ReturnVal = - 1;
LogMessage("getColumnIndex(GridView grd, string sColumnName, bool bAutoGeneratedColumn) Error", ex.Message);
}
return ReturnVal;
}
/// <summary>
/// Returns the columns index of the specified column based on the header text.
/// </summary>
/// <param name="sColumnName"></param>
/// <param name="r"></param>
/// <returns></returns>
public int getColumnIndex(string sColumnName, GridViewRow r)
{
int ReturnVal = -1;
try
{
if (r != null)
{
if (r.Cells.Count > 0)
{
for (int x = 0; x < r.Cells.Count; x++)
{
if (r.Cells[x] != null)
{
if (((System.Web.UI.WebControls.DataControlFieldCell)(r.Cells[x])).ContainingField.HeaderText == sColumnName)
{
ReturnVal = x;
break;
}
}
}
}
}
}
catch (Exception ex)
{
ReturnVal = -1;
}
return ReturnVal;
}
public void HideAutoGeneratedGridViewColumn(GridView grd, string sColumnName)
{
HideAutoGeneratedGridViewColumn(grd, getColumnIndex(grd, sColumnName, true));
}
public void HideAutoGeneratedGridViewColumn(GridView grd, int nColumnIndex)
{
try
{
grd.HeaderRow.Cells[nColumnIndex].Visible = false;
for (int x = 0; x < grd.Rows.Count; x++)
{
grd.Rows[x].Cells[nColumnIndex].Visible = false;
}
}
catch (Exception ex)
{
LogMessage("HideAutoGeneratedGridViewColumn(GridView grd, int nColumnIndex) Error", ex.Message);
}
}
Esto ocultará el encabezado de la columna y autogenerado celular sin su aspecto desordenado como el enlace de datos va a hacer. Esta es la respuesta correcta toma de here
Protected Sub Gdvisitor_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles Gdvisitor.RowCreated
If (e.Row.Cells.Count > 1) Then
e.Row.Cells(1).Visible = False
End If
End Sub
- 1. GridView Ocultar columna por código
- 2. ASP.NET: Ocultar columnas en gridview
- 3. Cambiar texto de una columna de selección autogenerada de una vista de cuadrícula en asp.net - ¿Cómo?
- 4. Ocultar una columna de GridView por su nombre en tiempo de ejecución en ASP.Net
- 5. Obtenga el valor de la columna oculta en Gridview
- 6. Gridview deshabilitar edición en 1 columna asp.net
- 7. GridView con diferentes tamaños de la columna
- 8. WPF Ocultar columna de cuadrícula
- 9. Ocultar cuadrícula ExtJS Columna encabezado
- 10. Ocultar columna ID en el control ListView
- 11. Ocultar una columna en ASP.NET Dynamic Data
- 12. Mostrar imagen basada en un valor en asp columna GridView
- 13. ¿Cómo acceder a una columna de gridview en rowdatabound?
- 14. Configuración de fondo de columna en WPF ListView/Gridview
- 15. Ancho de columna de Gridview en ASP.NET 2.0
- 16. Editar todas las filas para una columna en un GridView
- 17. ¿Cómo agregar una columna de GridView en código subyacente?
- 18. ASP.NET Ancho de configuración de la columna DataBound en GridView
- 19. Mostrar/Ocultar columna de tabla con colspan usando jQuery
- 20. WPF DataGrid - Ocultar columna usando un CheckBox
- 21. Ocultar la columna de wpf listview
- 22. ¿Cómo ocultar una columna de Excel?
- 23. Método para buscar índice de columna GridView por nombre
- 24. .NET GridView: ¿Puedes alinear a la derecha una sola columna?
- 25. Agregar cuadro de texto TemplateField Columna a GridView mediante programación
- 26. ¿Cómo ocultar la columna en la tabla de celdas GWT?
- 27. Apex - Informe interactivo - ¿Ocultar columna en descarga CSV?
- 28. ¿Cómo ocultar una columna en un control ListView?
- 29. ¿Cómo mostrar/ocultar una columna en tiempo de ejecución?
- 30. ASP.NET + GridView + CommandField como TemplateField
+1, lo único a tener en cuenta es que lo cambie por los RowTypes apropiados. Por ejemplo, si (e.Row.RowType! = DataControlRowType.Pager) {e.Row.Cells [1] .Visible = false; } –