2011-06-21 7 views
0

DataGridItemを非表示にするItemCommandがあります。これは、私たちが適用した交互のカラースキームを破っています。再バインドせずに、または各DataGridItemのBackColorプロパティを手動で設定せずに、スタイルを再適用する方法はありますか?DataGrid AlternatingItemStyle After e.Item.Visible = False

+0

あなたはzebraクライアント側を使用できます:http://docs.jquery.com/Tutorials:Zebra_Striping_Made_Easy? – adt

答えて

1

をさて、これはトータルのハックですが、あなたはBackColorにしか関心がないように見えるので、アイテムのスタイルを交互に入れ替えると、右の色の上に2色のイメージが作成されます。水平に伸ばし、グリッド自体の背景として垂直に繰り返すように設定します。アイテムの高さをコントロールできるので、正しい高さの線でイメージを作成するだけです。

合計ハック、私は知っていますが、それは時間の100%で動作し、レンダリングで急に燃えているでしょう。

+1

実装するにはあまりにも多くのハックがありますが、それはうまくいくでしょう。ありがとうございました。 – N0Alias

1

DataGridとGridViewのどちらの場合でも、目に見えないアイテムのAlternatingItemStyleを自動的に修復する機能はありません(これまでのところわかっています)。

ですから、次のように例えば、手動でそれを修復することができます

Private visibleRowIndex As Int32 = -1 
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound 
    If e.Row.RowType = DataControlRowType.DataRow Then 
     hide/show the GridViewRow according to your business-logic' 
     If e.Row.Visible Then 
      visibleRowIndex += 1 
      e.Row.CssClass = If(visibleRowIndex Mod 2 = 0, "GridRowStyle", "GridAlternatingRowStyle") 
     End If 
    End If 
End Sub 

編集:私はあなたがデータグリッドを使用していることを忘れてしまった:

Private visibleRowIndex As Int32 = -1 
Protected Sub DataGridItem_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles GridView1.RowDataBound 
    If e.Item.ItemType = ListItemType.Item OrElse _ 
     e.Item.ItemType = ListItemType.AlternatingItem Then 
     'show/hide the DataGridItem according to your business-logic' 
     If e.Item.Visible Then 
      visibleRowIndex += 1 
      e.Item.CssClass = If(visibleRowIndex Mod 2 = 0, "GridRowStyle", "GridAlternatingRowStyle") 
     End If 
    End If 
End Sub 
+0

私は手動でやりたいとは思っていませんでしたが、ハックがなければ、これに似たロジックのように見えます。私はそれを拡張メソッドに入れました。 +1 – N0Alias