Inicio arrow Articulos arrow Scrollable Gridview with Freeze header and sort image
JoomLeague Ranking
1. Bundesliga 2006/2007
  Home  FullAway
  P
Dortmund3
Nürnberg3
Bochum3
Mönchengladbach3
Frankfurt3
Aachen3
Wolfsburg3
Cottbus1
Mainz1
10 Berlin1
11 Bremen0
12 Hannover0
13 Bielefeld0
Schalke0
15 Stuttgart0
16 Bayern0
Hamburg0
18 Leverkusen0
  P
Dortmund6
Bochum6
Berlin4
Nürnberg3
Hannover3
Frankfurt3
Bayern3
Stuttgart3
Leverkusen3
10 Aachen3
11 Wolfsburg3
12 Mönchengladbach3
13 Mainz2
14 Cottbus1
15 Schalke1
16 Hamburg1
17 Bremen0
18 Bielefeld0
  P
Bochum3
Dortmund3
Hannover3
Bayern3
Berlin3
Leverkusen3
Stuttgart3
Mainz1
Hamburg1
10 Schalke1
11 Nürnberg0
12 Frankfurt0
13 Cottbus0
14 Bielefeld0
15 Bremen0
16 Aachen0
Wolfsburg0
18 Mönchengladbach0
Inicio

Objetivos
Visión
Misión

Acerca de Nosotros
Escribenos

Articulos
Datos Relevantes
Proyectos
Terminados
En Desarrollo
Scrollable Gridview with Freeze header and sort image  E-Mail

I was searching for a way to get a scrollable Gridview with a freeze header and I found different ways to do it, but most of them use CSS or JavaScript. What I want to find was a way to do it in the code file. (.CS or .VB)

Here I would try to explain how it could be done with code. (.CS)

 Works In Firefoxworks in Internet Explorer

How to use the code.

You just need to add a Panel control then add a Table and Gridview control inside of Panel control.

in the .CS file you need to add this code:

AddSortDirectionImage Function

 
/// summary
/// Email: Esta dirección de correo electrónico está protegida contra los robots de spam, necesitas tener Javascript activado para poder verla
///Web Page: http://www.grupoKino.com
/// [Español]Funcion que agrega una imagen a la columna ordenada de un gridView
/// [English]Function that adds a image to the sorted column.
/// summary
/// param name="gridviewID"
/// [Español]Gridview al cual se le agregara la imagen
/// [English]GridView to add sort image
/// param
/// param name="itemRow"
/// [Español]Renglon del gridview al cual se le agrega la imagen
/// [English]Row of gridview to add sort image
/// param

public void AddSortDirectionImage(GridView gridviewID, GridViewRow itemRow)
{
if (gridviewID.AllowSorting == false)
return;

Image sortImage = new Image();
Label space = new Label();

sortImage.ImageUrl = (
gridviewID.SortDirection ==
SortDirection.Ascending ? @"~/sort_asc.gif" : @"~/sort_desc.gif");
sortImage.Visible = true;
space.Text = " ";


for (int i = 0; i < gridviewID.Columns.Count; i++)
{
string colExpr = gridviewID.Columns[i].SortExpression;
if (colExpr != "" && colExpr == gridviewID.SortExpression)
{
itemRow.Cells[i].Controls.Add(space);
itemRow.Cells[i].Controls.Add(sortImage);
}
}
}

And FreezeGridviewHeader Function



/// summary
/// Author: Antonio Suarez
/// Email: Esta dirección de correo electrónico está protegida contra los robots de spam, necesitas tener Javascript activado para poder verla
///Web Page: http://www.grupoKino.com
/// [Español]Funcion que copia el header de un gridview a un control tipo Table
/// [English]Function that copy a gridview header to a table control.
/// summary
/// param name="_gv1"
/// [Español]Gridview del cual se copiara el encabezado.
/// [English]GridView from where the header row will be copied
/// param
/// param name="_tb1"
/// [Español]Renglon del gridview al cual se le agrega la imagen
/// [English]Row of gridview to add sort image
///
/// param name="_pc1"
/// [Español]Panel que contendra tanto al gridview como al control table
/// [English]Panel container of the gridview and table control.
/// param
protected void FreezeGridviewHeader(GridView _gv1, Table _tb1,Panel _pc1)
{
Page.EnableViewState = false;

//[Español]Copiando las propiedades del renglon de encabezado
//[English]Copying a header row data and properties
_tb1.Rows.Add(_gv1.HeaderRow);
_tb1.Rows[0].ControlStyle.CopyFrom(_gv1.HeaderStyle);
_tb1.CellPadding = _gv1.CellPadding;
_tb1.CellSpacing = _gv1.CellSpacing;
_tb1.BorderWidth = _gv1.BorderWidth;

//if (!_gv1.Width.IsEmpty)
//_gv1.Width = Unit.Pixel(Convert.ToInt32(_gv1.Width.Value) + Convert.ToInt32(
// _tb1.Width.Value) + 13);

//[Español]Copiando las propiedades de cada celda del nuevo encabezado.
//[English]Copying each cells properties to the new header cells properties
int Count = 0;
_pc1.Width = Unit.Pixel(100);
for (Count = 0; Count < _gv1.HeaderRow.Cells.Count - 1; Count++)
{
_tb1.Rows[0].Cells[Count].Width = _gv1.Columns[Count].ItemStyle.Width;
_tb1.Rows[0].Cells[Count].BorderWidth =
_gv1.Columns[Count].HeaderStyle.BorderWidth;
_tb1.Rows[0].Cells[Count].BorderStyle =
_gv1.Columns[Count].HeaderStyle.BorderStyle;
_pc1.Width = Unit.Pixel(Convert.ToInt32(
_tb1.Rows[0].Cells[Count].Width.Value) +
Convert.ToInt32(_pc1.Width.Value) + 14);
}
//Panel1.Width = Unit.Pixel(Convert.ToInt32(
// _tb1.Rows[0].Cells[Count-1].Width.Value) + 12);
}


The point here is that it should work in the most of the graphical browser and we will not have to add fix for each browser compatibility.

History

We need to add edit functionality. I hope all this could be useful for you, if this work fine.



Antonio Suarez.

 

 

 

 
Desarrollado por GrupoKino.com
©2007 Derechos Reservados.