2012-04-23 15 views
0

我有以下代碼來更改網格視圖中的行的顏色。這工作正常,我想要做的是改變日期返回值的文本顏色,如果它是相同的,行的相同顏色,因此無法看到值。格式gridview文本的一個字段以及行依賴於值

任何人都可以幫忙嗎?

Protected Sub KitNotReturned(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound 

     If e.Row.RowType = DataControlRowType.DataRow Then 

      Dim dateLoaned As String = DataBinder.Eval(e.Row.DataItem, "DateLoaned") 
      Dim dateReturend As String = DataBinder.Eval(e.Row.DataItem, "DateReturned") 

      If dateLoaned = dateReturend Then 

       e.Row.BackColor = Drawing.Color.HotPink 


      End If 
     End If 

    End Sub 

感謝

+0

不太清楚你在問什麼,如果你說這工作正常? – 2012-04-23 14:06:19

+0

代碼我必須改變行的顏色工作正常,我只是想添加一些東西來改變數據項DateReturned的文本的顏色。 – Sophie 2012-04-23 14:16:15

+0

我以 e.Row.Cells做到了這一點(4).ForeColor = Drawing.Color.HotPink 感謝 – Sophie 2012-04-23 14:25:26

回答

0

OK - 現在我明白了!它通常設立一個枚舉的GridView列一個好主意 - 如:

Enum GvColumn 
    Id = 0 
    Name = 1 
    ... 
    DateReturned = 4 
End Enum 

然後,您可以參考列:

e.Row.Cells(GvColumn).ForeColor 

這使得它不太可能,你會得到一個錯誤因爲您添加/刪除列,只要您保持枚舉是最新的。 當然,你可以做的另一種方式是設置單元格的文本屬性爲空字符串:

e.Row.Cells(GvColumn).Text="" 

最後,你也能設置欄後成爲一個模板列,然後使用的FindControl找到其中的文本框。模板列是這樣的:

<asp:TemplateColumn Header="Something here"> 
<ItemTemplate> 
<asp:textbox id="txtDateReturned" runat="server" text=='<%# Bind("DateReturnedText") %>' /> 
</ItemTemplate> 
</asp:TemplateColumn> 

然後,您可以在此獲得具有:

Dim tb as TextBox = CType(e.Row.FindControl("txtDateReturned"),TextBox) 

只是一些想法!

相關問題