How to change header captions

Discussion in 'ASP .Net Datagrid Control' started by Moshe Pack, Nov 30, 2004.

  1. Moshe Pack

    Moshe Pack Guest

    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.

    Thank you.
     
    Moshe Pack, Nov 30, 2004
    #1
    1. Advertisements

  2. An example:

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

    Eliyahu
     
    Eliyahu Goldin, Nov 30, 2004
    #2
    1. Advertisements

  3. Moshe Pack

    Moshe Pack Guest

    Eliyahu,

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

    Thanks,
    Moshe.
     
    Moshe Pack, Nov 30, 2004
    #3
  4. Yes Moshe, you can get to header captions from datagrid Columns collection:

    myGrid.Columns.HeaderText = "Another Text";

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

    Eliyahu
     
    Eliyahu Goldin, Nov 30, 2004
    #4
  5. Moshe Pack

    Moshe Pack Guest

    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.

     
    Moshe Pack, Dec 1, 2004
    #5
  6. 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

     
    Eliyahu Goldin, Dec 1, 2004
    #6
  7. Moshe Pack

    Moshe Pack Guest

    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.

     
    Moshe Pack, Dec 1, 2004
    #7
  8. Moshe,

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

    Eliyahu

     
    Eliyahu Goldin, Dec 1, 2004
    #8
  9. Moshe Pack

    Moshe Pack Guest

    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


     
    Moshe Pack, Dec 1, 2004
    #9
  10. 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

     
    Eliyahu Goldin, Dec 1, 2004
    #10
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.