1

请帮忙。

我正在使用 ASP/VB.net,并且我在后面的代码中从数据库中填充了一个单选按钮,如下所示。

rdoTheTest.DataSource = Test.Test_Get()
rdoTheTest.DataBind()

我现在在屏幕上看到收音机列表,我想为 1 行着色,当我使用它时,它们都变成相同的颜色。

rdoTheTest.ForeColor = Drawing.Color.Red

在过去使用列表视图场景时,我可以做这样的事情;

Private Sub LvTheTest_ItemDataBound(sender As Object, e As ListViewItemEventArgs) Handles lvTheTest.ItemDataBound
    Dim SomeTextBox As TextBox = DirectCast(e.Item.FindControl("SomeTextBox"), TextBox)
    If DataBinder.Eval(e.Item.DataItem, "SomeDBVAR") = 1 Then SomeTextBox.ForeColor = Drawing.Color.Red
End Sub

我的意图是这样做;

Private Sub rdoTheTest_DataBinding(sender As Object, e As EventArgs) Handles rdoTheTest.DataBinding
    If DataBinder.Eval(e.Item.DataItem, "SomeDBVAR") = 1 Then sender.ForeColor = Drawing.Color.Red
End Sub

问题是当有 10 行时在 DataBinding 中仅检索 1 行,而使用 ListView 时我得到 10 行,因为您可以使用 Handles ItemDataBound 您可以在每行拉取时进行操作。

有任何想法吗。

4

1 回答 1

1

使用 绑定数据,您始终可以为特定单选着色OnDataBound,例如:

Protected Sub rdoTheTest_DataBound(sender As Object, e As EventArgs)
    rdoTheTest.Items.FindByValue("SomeDBVar").Attributes.Add("style", "color: red")
End Sub

更新:

迭代绑定列表项并根据项值(或文本)设置适当的颜色:

    For Each item As ListItem In rdoTheTest.Items
        If item.Value = "1" Then
            item.Attributes.Add("style", "color: red")
        Else If item.Value = "2" Then
            item.Attributes.Add("style", "color: orange")
        Else 
            item.Attributes.Add("style", "color: green")
        End If
    Next        
于 2018-04-30T14:57:40.030 回答