Groups | Blog | Home
all groups > asp.net datagrid control > november 2004 >

asp.net datagrid control : How to change header captions



Moshe Pack
11/30/2004 2:25:01 AM
How can I change header captions when working with a bound DataGrid in
ASP.Net? I am looking for a way to do this without involving the SQL.

Moshe Pack
11/30/2004 5:25:02 AM
Eliyahu,

Do you have an idea how to do with code-behind?

Thanks,
Moshe.

[quoted text, click to view]
Eliyahu Goldin
11/30/2004 3:14:33 PM
An example:

<asp:BoundColumn DataField="Description" HeaderText="Another
Text"></asp:BoundColumn>

Eliyahu

[quoted text, click to view]

Eliyahu Goldin
11/30/2004 4:15:02 PM
Yes Moshe, you can get to header captions from datagrid Columns collection:

myGrid.Columns[i].HeaderText = "Another Text";

Note that automatically generated columns are not added to the Columns
collection.

Eliyahu

[quoted text, click to view]

Moshe Pack
12/1/2004 12:39:02 AM
Eliyahu,

If I generate columns automatically (AutoGenerateColumns = True), is there
anything I can do to change the header text other than to create column
aliases in the SQL?

Thanks,
Moshe.

[quoted text, click to view]
Moshe Pack
12/1/2004 2:35:02 AM
Eliyahu,

In the ItemCreated event, the Text property for all table cells contains an
empty string.

In the ItemDataBound event, the Text property is indeed filled in for data
cells, but is blank for header cells.

Any other ideas?

Thanks a lot,
Moshe.

[quoted text, click to view]
Moshe Pack
12/1/2004 3:19:02 AM
Eliyahu,

I looped around, writing to the Output window with the following:

For Each cell In e.Item.Cells
If cell.Text <> String.Empty Then
System.Diagnostics.Debug.WriteLine("grdUsers_ItemCreated: '"
& cell.Text.ToString & "'")
End If
Next cell

Nothing gets printed in ItemCreated(). In ItemDataBound() only the data
rows are printed to the Output window. The headers never make it there.

Any ideas?

Thanks,
Moshe


[quoted text, click to view]
Eliyahu Goldin
12/1/2004 11:39:40 AM
Moshe,

You can try doing this in ItemCreated event. Something like that:

if (e.Item.ItemType != ListItemType.Header)
return;

foreach (TableCell cell in e.Item.Cells)
{
switch (cell.Text)
{
case "Description":
cell.Text = "Another Text";
break;
...
}
}

Eliyahu

[quoted text, click to view]

Eliyahu Goldin
12/1/2004 12:41:16 PM
Moshe,

Please double check. For the items of type ListItemType.Header Text
property should be set to the column name.

Eliyahu

[quoted text, click to view]

Eliyahu Goldin
12/1/2004 3:03:32 PM
OK, I've tested it myself. The following ItemCreated event handler WORKS.
B'emet. It adds "aaa" to every header.

private void dg_ItemCreated(object sender,
System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType != ListItemType.Header)
return;
foreach (TableCell cell in e.Item.Cells)
{
cell.Text += "aaa";
}
}

Eliyahu

[quoted text, click to view]

AddThis Social Bookmark Button