2012-11-26 38 views
2

是否有内置方法突出显示GridView中当前选定的行?gridview突出显示当前行

我的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 

这凸显了该行,但是一旦用户按下另一行的按钮,它仍然保留了所有的颜色先前按下的行。

是否有办法让每次只有一行(当前选定的行)被突出显示?

感谢

回答

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 
2

我在SelectedIndexChanged事件中这样做,它适用于我。

GridView1.Rows[GridView1.SelectedIndex].BackColor = Color.Yellow; 
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 
1

昏暗previousSelected作为整数

 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 
+0

好了,现在可以删除一个答案,并添加一些特殊塔潘语言质量 – Drew

+0

如何写像网与这种类型的代码清洁。请告诉我 – Tapan

+0

突出显示该块,并击中扭曲{}的东西。 – Drew