2

グリッドビューで現在選択されている行を強調表示する組み込みの方法はありますか?

グリッドビューの各行には(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

これにより行が強調表示されますが、ユーザーが別の行のボタンを押すと、以前に押されたすべての行でその色が保持されます。

一度に1行(現在選択されている行)のみを強調表示する方法はありますか?

ありがとう

4

5 に答える 5

3

グローバル変数を使用して、選択されている行のインデックスを格納する場合、新しい行が選択されるたびに、その行を元の色に戻すことができます。

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
于 2012-11-26T15:42:11.263 に答える
3

gridviewには、SelectedIndexChangedイベントと、@jonhopkinsの回答と組み合わせて使用​​できるGridView.SelectedRowプロパティがあります。

于 2012-11-26T15:59:54.310 に答える
2

私はSelectedIndexChangedイベントでそれをします、そしてそれは私のために働きます。

GridView1.Rows[GridView1.SelectedIndex].BackColor = Color.Yellow;
于 2013-03-04T10:00:14.533 に答える
1

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
于 2015-12-24T04:52:17.937 に答える
0
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
于 2015-12-24T04:48:27.530 に答える