我有以下代码来改变网格视图中行的颜色。这工作正常,我想要做的是改变Date Returned值的文本颜色,如果相同,改为行的相同颜色,因此无法看到该值。
任何人都可以帮忙吗?
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 :(得分:0)
好的 - 现在我明白了!为gridview列设置枚举通常是个好主意 - 例如:
Enum GvColumn
Id = 0
Name = 1
...
DateReturned = 4
End Enum
然后,您可以将该列称为:
e.Row.Cells(GvColumn).ForeColor
这使您在添加/删除列时不太可能出现错误,前提是您使枚举保持最新。 当然,你可以做到的另一种方法是将单元格的text属性设置为空字符串:
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)
只是一些想法!