2010-11-29 24 views
1

私は、ストアドプロシージャによって返された顧客の注文が入力されたGridViewを含むASP.Netページで作業しています。私がしたいのは、優先順位を示すためにGridViewの行のバックカラーを動的に変更することです。GridView行にBackColorを動的に割り当てる方法は?

ストアドプロシージャは、レコードの優先度を示す整数を返します。整数を色に変換してGridView行に表示するだけでよいと思います。

「GridViewの行を表示させる」という部分は、私に苦労している部分です。

これを行うにはどうすればよいですか?誰か私に例を与えることができますか?

ありがとうございます。

+0

何言語、C#またはvb.net? –

+0

申し訳ありませんが、私はそれを言及すべきでした。私はVB.Netで働いています。 – ks78

答えて

3

サンプル溶液に続き:

C#: ASPX:

<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound" > 
... 
</asp:GridView> 

分離コード:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     int priority = (int)DataBinder.Eval(e.Row.DataItem, "priority"); 
     switch (priority) 
     { 
      case 1: 
       e.Row.BackColor = Drawing.Color.Green; 
       break; 
      case 2: 
       e.Row.BackColor = Drawing.Color.Red; 
       break; 
      default: 
       e.Row.BackColor = Drawing.Color.Black; 
       break; 
     } 
    } 
} 

VB.Netの分離コード:

Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound 
    Select Case e.Row.RowType 
     Case DataControlRowType.DataRow 
      Dim priority As Int32 = DirectCast(DataBinder.Eval(e.Row.DataItem, "priority"), Int32) 
      Select Case priority 
       Case 1 
        e.Row.BackColor = Drawing.Color.Green 
       Case 2 
        e.Row.BackColor = Drawing.Color.Red 
       Case Else 
        e.Row.BackColor = Drawing.Color.Black 
      End Select 
    End Select 
End Sub 
+0

ああ...私はそんなことをやっているとは思わなかった。私はそれを試してみましょう。 – ks78

+0

それはトリックでした。ご協力いただきありがとうございます。 RowStyle BackColorを無駄に設定しようとしていましたが、RowDataBoundイベントで色を設定するとは思わなかった。再度、感謝します! – ks78

関連する問題