3

の特定のラベルの背景色を変更するコードがいくつかありGridView、それはすべてうまく機能します。

protected void HighLight_Hours(Label Quarter)
{
    Int32 Hours;
    Int32.TryParse(Quarter.Text, out Hours);
    switch (Hours)
    {
        case 0:
            Quarter.BackColor = Color.Red;
            break;
        case 1:
            Quarter.BackColor = Color.Yellow;
            break;
        case 2:
            Quarter.BackColor = Color.LightGreen;
            break;
    }
}

しかし、グリッド内のすべてのラベルに対して関数を呼び出す代わりに (1 日に 15 分ごとに 1 つのラベルが多数あります)、すべての内容をループして、GridViewそれに応じて色を設定する方法はありますか?

4

4 に答える 4

4

次のようなことを試してください:

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        // read in all controls of a row
        foreach (var control in e.Row.Controls)
        {
            // check if the control is a label
            if (control is Label)
            {
                // call your function and cast the control to a Label
                HighLight_Hours((Label) control);
            }
        }
    }
}
于 2012-07-02T19:10:11.157 に答える
1

これはそれを行う必要があります:

 protected void gv_OnRowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {

            foreach (DataControlFieldCell dcfc in e.Row.Controls)
            {
                DataControlFieldCell dataControlFieldCell = dcfc;

                foreach(var control in dataControlFieldCell.Controls)
                    if (control is Label)
                        HighLight_Hours((Label) control);

            }
        }
    }
于 2012-07-02T20:04:12.970 に答える
0

どうぞ...

foreach (DataGridItem CurrentItem in SomeKindOfDataGrid.Items)
     CurrentItem.BackColor = Color.Red;

アンドリュー

于 2012-07-02T19:07:15.223 に答える
0

次のイベントでトラバースして制御を取得するだけです。ラフは次のようになります。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        { 
             foreach (GridViewRow gvr in GridView1.Rows)
                {
                       foreach (Control ctrl in gvr.Controls)   
                     {

                          Label lbl = (Label )e.Row.FindControl("yourlabel");
                          lbl.ForeColor =system.drawing.color.red;


                        }
               }
        }
于 2012-07-02T19:08:55.743 に答える