0

これは私のグリッドビュー出力です。列と行は動的にバインドされます。

Anand R         4:4:18  NULL    6:34:52  8:25:16     NULL

Arunkumar S     8:37:31 NULL    9:1:42   8:48:27     NULL

Bharathi R      6:12:24 NULL    8:45:40  11:39:12    12:27:26

Gnanaguru V     6:32:20 NULL    5:35:56  3:50:20     NULL

Ilayaraja K     7:37:30 NULL    10:1:15  8:58:43     NULL

Imran Khan S    7:46:48 NULL    12:15:4  NULL            NULL

セルの値が 8:30 時間よりも大きい場合は何らかの色が必要であり、8:30 未満の場合はセルが何らかの色である必要があり、null 値の場合は元の値が同じままであることを意味するため、出力が必要です。したがって、条件を確認するには、グリッドビューの行と列を動的にループする必要があります。gridview rowdatabound で次のコードを使用していますが、正確な出力が得られません..

        foreach (GridViewRow row in gvshowreport.Rows)                
         {                    
           for (int i = 0; i < row.Cells.Count; i++)                    
            {                        
               if (i != 0)                        
                   {                           
                   string value = row.Cells[i].Text;

                        if (value != "&nbsp;")

                        {
                            string[] values = Regex.Split(value, ":");
                            int k = Convert.ToInt32(values[0]);
                            int m = Convert.ToInt32(values[1]);
                            int min = k * 60;
                            int add = min + m;
                            if (add <= 510)
                            {
                                e.Row.Cells[i].BackColor = System.Drawing.Color.LightGreen;
                            }
                            else
                            {
                                e.Row.Cells[i].BackColor = System.Drawing.Color.Red;
                            }
                        }
                        else
                        {
                            e.Row.Cells[i].BackColor = System.Drawing.Color.PaleGoldenrod;
                        }
                    }
                }
            }  

初めてループが完全に実行され、グリッドビューの最初の行とセルの値が取得されます。次回ループを実行すると、同じ最初の行のセル値が取得されます。行と列をループするのを間違えたと思います...

if (e.Row.RowType == DataControlRowType.DataRow)

  {

      foreach(TableCell cell in e.Row.Cells)

        val = cell.Text;
  }

私はこのコードを使用して結果を達成しました..投稿してくれてありがとう

4

2 に答える 2

1

コードとして、「e.Row.Cells[i]」を変数「row」に置き換える必要があります

于 2013-11-06T12:44:42.350 に答える
1

Gridview の Row_dataBound イベントでセルの色を変更します

gridView の Row_dataBound イベントで単一のレコード バインドが発生したとき

protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
{
     if (e.Row.RowType == DataControlRowType.DataRow)
     {
          //Your Cell Control Find, than change the color according to condition
     }
}

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowdatabound%28v=vs.110%29.aspx

役に立ったら回答としてマークしてください

于 2013-11-06T12:46:55.997 に答える