Как изменить текст заголовка Gridview после привязки к данным? - PullRequest
8 голосов
/ 21 сентября 2010

У меня есть вид сетки. Я связал DataTable с этим Gridview. Он динамический, поэтому нет жесткого кода. Текст в дизайне.

Я пытался изменить его после Databound и в PreRender gridview, но безуспешно.

На самом деле в тексте есть символ подчеркивания ('_'), и я хочу заменить его пробелом.

Ниже приведен код

<asp:GridView ID="grdSearchResult" runat="server" AutoGenerateColumns="True" Width="99%" OnPreRender="grdSearchResult_PreRender"
            OnRowCreated="grdSearchResult_OnRowCreated" OnPageIndexChanging="grdSearchResult_PageIndexChanging">
            <HeaderStyle ForeColor="White" BackColor="#215B8D" />
            <AlternatingRowStyle BackColor="#F7F7F7" />
            <RowStyle CssClass="gridtext" HorizontalAlign="Center" />
        </asp:GridView>



protected void grdSearchResult_PreRender(object sender, EventArgs e)
{
    for (int i = 0; i < grdSearchResult.Columns.Count; i++)
    {
        grdSearchResult.Columns[i].HeaderText = grdSearchResult.Columns[i].HeaderText.Replace("_", "");
    }
}

Ответы [ 4 ]

13 голосов
/ 21 сентября 2010

Может сделать это с RowDataBound событием GridView

protected void grdSearchResult_RowDataBound(object sender, GridViewRowEventArgs e)
{
     if (e.Row.RowType == DataControlRowType.Header)
     {
        for (int i = 0; i < e.Row.Cells.Count; i++)
        {
            e.Row.Cells[i].Text = e.Row.Cells[i].Text.Replace("_", " ");
        }
     }
}

, и оно отлично работает.

9 голосов
/ 21 сентября 2010

Вы можете изменить текст ячейки, а не свойство HeaderText:

        for (int i = 0; i < grdSearchResult.Columns.Count; i++)
        {
            grdSearchResult.HeaderRow.Cells[i].Text = grdSearchResult.HeaderRow.Cells[i].Text.Replace("_", "");
        }

Вам не нужно делать это в PreRender, сразу после привязки данных.

2 голосов
/ 25 августа 2013

Установите для свойства AutoGenerateColumns gridview значение false и добавьте BoundFields.

<asp:GridView ID="grdEmployee" runat="server" AutoGenerateColumns="false">
<columns>
<asp:BoundField HeaderText="ID" DataField="empNo" />
<asp:BoundField HeaderText="First Name" DataField="fName" />
<asp:BoundField HeaderText="Last Name" DataField="lName" />
</columns>
</asp:GridView>
0 голосов
/ 30 мая 2013

Но в событии OnRowDataBound оригинальный e.Row.Cell [i] .Text недоступен для изменения.

Например. в коде ниже "headerRow" всегда пуст.

protected void grdSearchResult_RowDataBound(object sender, GridViewRowEventArgs e)
{
     if (e.Row.RowType == DataControlRowType.Header)
     {
        for (int i = 0; i < e.Row.Cells.Count; i++)
        {
            string headerRow = e.Row.Cells[i].Text;
            e.Row.Cells[i].Text = headerRow.Replace("_", " ");
        }
     }
}
...