實現 DataGrid 加入光棒的效果。

完全利用後置程式碼,來實現 DataGrid 有光棒移動的效果。

完全利用後置程式碼,來實現 DataGrid 有光棒移動的效果,畫面效果如下


Dim ItemBColor As String      ' 一般列背景色
Dim AltItemBColor As String   ' 替代列背景色
Dim FinalBColor As String     ' 決定背景色

Dim ItemFColor As String      ' 一般列前景色
Dim AltItemFColor As String   ' 替代列前景色
Dim FinalFColor As String     ' 決定前景色

' DataGrid.ItemStyle 無設定背景色,ItemStyle.BackColor.Name="0",此時需要直接指定顏色,否則Html不認得"0"是什麼顏色
ItemBColor = IIf(dgIdxDesc.ItemStyle.BackColor.Name.ToString = "0", "#FFFFFF", dgIdxDesc.ItemStyle.BackColor.Name.ToString)

' DataGrid ItemStyle 無設定前景色,ItemStyle.BackColor.Name="0",此時需要直接指定顏色,否則Html不認得"0"是什麼顏色
ItemFColor = IIf(dgIdxDesc.ItemStyle.ForeColor.Name.ToString = "0", "#000000", dgIdxDesc.ItemStyle.ForeColor.Name.ToString)

' DataGrid.AlternatingItemItemStyle 無設定背景色,ItemStyle.BackColor.Name="0",此時需要直接指定顏色,否則Html不認得"0"是什麼顏色
AltItemBColor = IIf(dgIdxDesc.AlternatingItemStyle.BackColor.Name.ToString = "0", "#FFFFFF", dgIdxDesc.AlternatingItemStyle.BackColor.Name.ToString)

' DataGrid.AlternatingItemItemStyle 無設定前景色,ItemStyle.BackColor.Name="0",此時需要直接指定顏色,否則Html不認得"0"是什麼顏色
AltItemFColor = IIf(dgIdxDesc.AlternatingItemStyle.ForeColor.Name.ToString = "0", "#000000", dgIdxDesc.AlternatingItemStyle.ForeColor.Name.ToString)

' 非編輯模式
If Me.dgIdxDesc.EditItemIndex = -1 Then

   ' 若是一般列 或 替代列
   If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then

       ' 若是一般列,就指定ItemBColor背景色,否則指定AltItemBColor背景色
       FinalBColor = IIf(e.Item.ItemType = ListItemType.Item, ItemBColor, AltItemBColor)
       
       ' 若是一般列,就指定ItemBColor前景色,否則指定AltItemBColor前景色
       FinalFColor = IIf(e.Item.ItemType = ListItemType.Item, ItemFColor, AltItemFColor)

       Dim DOMText As String

       ' 加入MouseOver 時的DOM
       DOMText = String.Format("this.style.backgroundColor='#FFD700'; this.style.color='#FF4500'; ")
       e.Item.Attributes.Add("onmouseover", DOMText)

       ' 加入MouseOut 時的DOM
       DOMText = String.Format("this.style.backgroundColor='{0}'; this.style.color='{1}'; ", FinalBColor, FinalFColor)
       e.Item.Attributes.Add("onmouseout", DOMText)

   End If

End If