2010-09-21 39 views
8

Bir gridview var Ben bir Gridview ile bir DataTable bağlıyım Onun dinamik böylece desin içinde bir sabit kod Metin.Databound'tan Sonra Gridview'in Başlık Metni nasıl değiştirilir?

Veri Tabanı'ndan sonra ve Ön Görünüm'de ön görünümde değiştirmeyi denedim ancak Başarı yok.

Aslında metinde Alt çizgi ('_') var ve bunu boşlukla değiştirmek istiyorum.

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

Sen PreRender bunu yapmak gerekmez, sadece veriler sonrasında Aşağıda

Sen ziyade HeaderText özelliğinden daha hücrenin metni değiştirebilir kod

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

cevap

13

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

ait RowDataBound olayla bunu yapabilir ve iyi çalışıyor.

+3

Bu işe yarayacak, sadece bir satır her bağlı olduğunda yapılacaktır. – Brissles

9

olduğunu bağlıydı.

+0

bunu kontrol edin ... çalışmıyor. – Azhar

+0

Yapıyor, denedim. – Brissles

+0

Bunu "grdSearchResult.Columns.Count" yerine grdSearchResult.HeaderRow.Cells.Count'unu kullanarak çalıştım. – emragins

0

Ancak OnRowDataBound olayında, orijinal e.Row.Cell [i]. Metin, değiştirme için kullanılamıyor.

Ör. "headerRow" altındaki kodda her zaman boştur. yanlış ve eklemek BoundFields için GRIDVIEW arasında

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

Bu bir yorum olmalı, cevap değil. – kenrogers

+0

Evet, bu sorunla karşılaşıyorum ... 'Page_Load' olayı sırasında kullanmaya çalıştığımda' HeaderRow' özelliği null. Başlığa ne zaman, nerede ve nasıl erişeceğimi görmek için burada arama yapın. – Zarepheth

2

Seti AutoGenerateColumns özelliği.

İlgili konular