4

私は sqldatasource と gridview を持っています。

私は2つの列を持っています:

ID | Status
1   Closed
2   Opened
3   Waiting

列の値に基づいて、グリッドビューの表示状態でラベルの色を変更する方法'status'

たとえば、セルの値が " Closed" の場合、ラベルの色は赤になり、そうであればopened緑になります。

列のすべてのセルをループすることを考えましstatusた。セルに特定の値が含まれている場合、色が変わります。(行データ バインド イベント内)。しかし、ループ部分のためにこのアイデアが良いものだとは思わないので、私はこれをしていません。

4

3 に答える 3

3

グリッド ビューから RowDataBound イベントを使用して、ステータスを確認します。そのイベント(登録するかどうかにかかわらず)が呼び出されるため、ループを実行する必要はありません。注意すべきことの1つは、正しい行(ヘッダー、フッター、代替など)を見ていることを確認する必要があるため、次のようなものです

void YourGridViewName_RowDataBound(Object sender, GridViewRowEventArgs e)
{

    if(e.Row.RowType == DataControlRowType.DataRow)
    {
       // Do your color change here by accessing the col with e.Row.Cells[column_index].BackColor = 'what ever you want'
    }
}
于 2012-07-10T19:55:59.930 に答える
2

マークアップで RowDataBound イベントを有効にできます

<asp:GridView ID="gridview1" runat="server" OnRowDataBound="RowDataBound">

</asp:GridView>

そして、これをコード ビハインド ファイルに入れます。

protected void RowDataBound(Object sender, GridViewRowEventArgs e)
   {
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
       // Retrieve the underlying data item. In this example
       // the underlying data item is a DataRowView object. 
       DataRowView rowView = (DataRowView)e.Row.DataItem;

       // Retrieve the state value for the current row. 
       String state = rowView["state"].ToString();

        //format color of the as below 
        if(state == "Closed")
                (e.Row.FindControl("lbl1") as Label).BackColor  = Color.Red;

        if(state == "Open")
                (e.Row.FindControl("lbl1") as Label).BackColor = Color.Green;

        if(state == "Waiting")
                (e.Row.FindControl("lbl1") as Label).BackColor = Color.Yellow;

   }
}
于 2012-07-10T19:56:45.063 に答える
1

グリッド ビューの rowdatabound イベントにコードを記述する必要があります。例:

private GridView1_RowDatabound(object sender,EventArgs e)
{
   if(e.Row.RowType == DataControlRowType.DataRow)
   {
     // You have to put your logic here. 
       if( e.Row.Cells[1].Text == "closed" ) 
       {
            // to get a reference to label control
           Label lb = e.Row.FindControl("LabelCOntrolID");

       }

   }               
}
于 2012-07-10T19:56:49.753 に答える