格式化一个字段的gridview文本以及依赖于值的行

时间:2012-04-23 14:00:35

标签: gridview

我有以下代码来改变网格视图中行的颜色。这工作正常,我想要做的是改变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

由于

1 个答案:

答案 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)

只是一些想法!