SqlConnection cn = new SqlConnection("Data Source = localhost;User ID = sa;Password = pp;DATABASE = db");
            cn.Open();
            SqlCommand cmd = new SqlCommand("Select wo_id,wo_state from Working",cn);
            DataTable tbl = new DataTable();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(tbl);
            for (int i = 0; i < tbl.Rows.Count; i++)
            {
                ListViewItem lvi = new ListViewItem();
                switch (tbl.Rows[i]["wo_state"].ToString())
                {
                    case "完成":
                        lvi.ForeColor = Color.Red;
                        break;
                    case "开始":
                        lvi.ForeColor = Color.Green;
                        break;
                    case "待工":
                        lvi.ForeColor = Color.Blue;
                        break;
                    default:
                        break;
                }
                lvi.Text = tbl.Rows[i]["wo_id"].ToString();
                ltv1.Items.Add(lvi);
            }
这样写应该没错吧,就是不行,列出来的几个Item全是黑色的字。
但是这么写又可以:
for (int i = 0; i < 10; i++)
            {
                ListViewItem lvi = new ListViewItem();
                switch (i % 3)
                {
                    case 0:
                        lvi.ForeColor = Color.Red;
                        break;
                    case 1:
                        lvi.ForeColor = Color.Blue;
                        break;
                    case 2:
                        lvi.ForeColor = Color.Green;
                        break;
                    default:
                        break;
                }
                lvi.Text = i.ToString();
                ListView1.Items.Add(lvi);
            }
LitsView控件和TreeView控件都是这样,这是郁闷!
我快疯了,谁能帮帮我!?告诉我到底错在哪里?

解决方案 »

  1.   

    foreach (GridView row in this.GridView1.Rows)
            {
                Label lb= row.FindControl("label") as Label;
                if (lb != null)
                {
                    if (lb.Text == "完成")
                    {
                        lb.ForeColor = Color.Red;
                    }
                    else if (lb.Text == "开始")
                    {                }
                    else if (lb.Text == "待工")
                    {                }
                    else
                    {
     
                    }
                }
             }你应该循环的数据控件,不是数据吧?
      

  2.   

    不明白具体意思
    但是
    根据你的程序在我的电脑上可以达到效果啊
    Sqlcon = new SqlConnection(ConString);
    Sqlcon.Open();
    string SqlString="select name,Statue from TempDT01";
    SqlAd = new SqlDataAdapter(SqlString,Sqlcon);
    DataTable dt =new DataTable();
    SqlAd.Fill(dt);
    for(int i=0;i<dt.Rows.Count;i++)
    {
    ListViewItem lvt = new ListViewItem();
    switch(dt.Rows[i][1].ToString())
    {
    case "完成":
    lvt.ForeColor =Color.Red;
    break;
    case "待确认":
    lvt.ForeColor = Color.Yellow;
    break;
    case "未完成":
    lvt.ForeColor =Color.Blue;
    break;
    }
    lvt.Text=dt.Rows[i][0].ToString();
    this.listView1.Items.Add(lvt);
    }
    }
      

  3.   

    zzyhuian06142() 
    这就是我郁闷的地方
      

  4.   

    解决,是我数据库中数据类型用错了,我用nchar类型,结果从数据库中取出的数据都不足位,后面全补了空字符,所以和switch语句中的各个case字符不匹配,当然得不到应得的效果啦:)