【问题标题】:gridview highlighting current rowgridview 突出显示当前行
【发布时间】:2012-11-26 15:24:55
【问题描述】:

是否有在网格视图中突出显示当前选定行的内置方法?

gridview 中的每一行都有一个按钮(通过 buttonField)。当用户按下此按钮时,背景颜色会发生变化...我是这样做的:

Protected Sub gvTransferOwner_RowCommand(sender As Object, e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gvTransferOwner.RowCommand
    If e.CommandName = "Select" Then
        Dim index As Integer = Convert.ToInt32(e.CommandArgument)
        Dim selectedRow As GridViewRow = gvTransferOwner.Rows(index)
        selectedRow.Style.Add("background-color", "#ffcccc")
    End If
End Sub

这会突出显示该行,但一旦用户按下另一行中的按钮,它仍会在所有先前按下的行中保留该颜色。

有没有办法一次只突出显示一行(当前选定的行)?

谢谢

【问题讨论】:

    标签: asp.net .net vb.net


    【解决方案1】:

    如果您使用全局变量来存储正在选择的行的索引,您可以在选择新行时将该行更改回原始颜色。

    Dim previousSelected As Integer 'global variable to store the last selected index
    Protected Sub gvTransferOwner_RowCommand(sender As Object, e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gvTransferOwner.RowCommand
        If e.CommandName = "Select" Then
            Dim index As Integer = Convert.ToInt32(e.CommandArgument)
            Dim selectedRow As GridViewRow = gvTransferOwner.Rows(previousSelected)
            selectedRow.Style.Add("background-color", "#ffffff") 'change it back to original color
            selectedRow = gvTransferOwner.Rows(index)
            selectedRow.Style.Add("background-color", "#ffcccc") 'change the color of the new row
            previousSelected = index
        End If
    End Sub
    

    【讨论】:

      【解决方案2】:

      gridview 有一个 SelectedIndexChanged 事件以及一个GridView.SelectedRow Property,您可以将其与@jonhopkins 的答案结合使用。

      【讨论】:

        【解决方案3】:

        我在SelectedIndexChanged 事件中这样做,它对我有用。

        GridView1.Rows[GridView1.SelectedIndex].BackColor = Color.Yellow;
        

        【讨论】:

          【解决方案4】:

          Dim previousSelected As Integer

                  If e.CommandName = "Select" Then
                      previousSelected = GetVal(ViewState("previousSelected"))
                      Dim index As Integer = Convert.ToInt32(e.CommandArgument)
                      Dim selectedRow As GridViewRow = grvOptionset.Rows(previousSelected)
                      selectedRow.Style.Add("background-color", "#ffffff") 'change it back to original color
                      selectedRow = grvOptionset.Rows(index)
                      selectedRow.Style.Add("background-color", "#ffcccc") 'change the color of the new row
                      ViewState("previousSelected") = index
                  End If
          

          【讨论】:

          • 好的,现在删除一个答案,并添加一些特殊的Tapan语言以提高质量
          • 如何编写这种类型的代码,如 Net & Clean。请告诉我
          • 高亮方块并点击波浪形的 { } 东西。
          【解决方案5】:
          Dim previousSelected As Integer 'global variable to store the last selected index
          Protected Sub gvTransferOwner_RowCommand(sender As Object, e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gvTransferOwner.RowCommand
              If e.CommandName = "Select" Then
                   previousSelected = ViewState("previousSelected")
                  Dim index As Integer = Convert.ToInt32(e.CommandArgument)
                  Dim selectedRow As GridViewRow = gvTransferOwner.Rows(previousSelected)
                  selectedRow.Style.Add("background-color", "#ffffff") 'change it back to original color
                  selectedRow = gvTransferOwner.Rows(index)
                  selectedRow.Style.Add("background-color", "#ffcccc") 'change the color of the new row
                   ViewState("previousSelected") = index
              End If
          End Sub
          

          【讨论】:

            猜你喜欢
            • 2012-07-23
            • 2020-10-30
            • 2016-09-25
            • 2011-07-21
            • 1970-01-01
            • 1970-01-01
            • 2011-06-16
            • 1970-01-01
            • 2020-03-14
            相关资源
            最近更新 更多