0

我有以下代码来更改网格视图中行的颜色。这很好用,我想要做的是将返回日期值的文本颜色(如果它相同)更改为行的相同颜色,因此无法看到该值。

谁能帮忙?

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

谢谢

4

1 回答 1

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)

只是一些想法!

于 2012-04-24T18:08:55.117 回答