2012-04-10 88 views
4

我的GridView有3個綁定列:A,B和C.我想在加粗中顯示3列的最高值。如何進行比較並將字體設置爲粗體(最好在aspx文件中)?謝謝。如何動態調整GridView單元格的樣式?

<Columns>     
<asp:BoundField DataField="A" HeaderText="A" SortExpression="A" />     
<asp:BoundField DataField="B" HeaderText="B" SortExpression="B" /> 
<asp:BoundField DataField="C" HeaderText="C" SortExpression="C" /> 
</Columns> 

澄清:列A,B和C中的任何NUMERIC值可能是最大的,具體取決於行。這是我想要設置爲粗體的值。

例子:

3 **4** 1 
**6** 2 0 
**9** 1 2 
+1

什麼是「最高」值?這些數字字段?你的DataSource是什麼? – 2012-04-10 17:43:56

回答

6

您需要的代碼隱藏於這樣的事情。爲此目的使用RowDataBound

protected void Grid_RowDataBound(Object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     int number; 
     var highestCells = e.Row.Cells.Cast<TableCell>() 
      .Where(tc => int.TryParse(tc.Text, out number)) 
      .OrderByDescending(c => int.Parse(c.Text)); 
     foreach(var cell in highestCells) 
      cell.Font.Bold = true; 
    } 
} 
9

試試這個方法:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     for (int j = 0; j < e.Row.Cells.Count; j++) 
     { 
      e.Row.Cells[j].Style.Add("BORDER-BOTTOM", "#aaccee 1px solid"); 
      e.Row.Cells[j].Style.Add("BORDER-RIGHT", "#aaccee 1px solid"); 
      e.Row.Cells[j].Style.Add("padding-left", "5px"); 
     } 
    } 
4

您可以在GridView中的RowDataBound方法做到這一點。 理想的方法是從DB本身獲取3個coloumns的最大值,並檢查rawdatabound中的值。 這個網址可以幫助你提供一個小小的介紹。與此類似,您可以添加條件,並設置該列的大膽 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowdatabound.aspx 相應的字體樣式中的條件,你可以在此線,大膽 e.Row.Cells[2].Font.Bold = true;

相關問題