2010-09-21 21 views
8

我有一個gridview我綁定一個DataTable與該Gridview它的動態,所以沒有硬編碼在設計文本。如何在Databound後更改Gridview的標題文本?

我試圖在Databound和GridView的PreRender之後改變它,但沒有成功。

其實在文本中有下劃線('_'),我想用空格替換它。

下面是代碼

<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("_", ""); 
    } 
} 

回答

13

可與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("_", " "); 
     } 
    } 
} 

做到這一點,它工作正常。

+3

這將工作,它只會在每次綁定行時完成。 – Brissles 2010-09-21 09:06:46

9

您可以更改單元格的文本,而不是HeaderText屬性:

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

你並不需要做這的PreRender,就在數據後已受到約束。

+0

檢查它不起作用。 – Azhar 2010-09-21 08:57:18

+0

它確實,我試過了。 – Brissles 2010-09-21 09:12:58

+0

得到這個工作使用'grdSearchResult.HeaderRow.Cells.Count'而不是'grdSearchResult.Columns.Count' – emragins 2011-07-26 21:06:31

0

但是在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("_", " "); 
     } 
    } 
} 
+0

這應該是一個評論,而不是一個答案。 – kenrogers 2013-05-30 20:02:24

+0

是的,我遇到了這個問題......當我嘗試在'Page_Load'事件中使用它時,'HeaderRow'屬性爲null。在這裏搜索以查看我應該何時,何地以及如何訪問標題。 – Zarepheth 2013-08-04 04:51:48

2

將GridView的AutoGenerateColumns屬性設置爲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> 
相關問題