如果column1为< C#listview为颜色行比第2列 [英] C# listview to color rows if column1 is < than column2

查看:90
本文介绍了如果column1为< C#listview为颜色行比第2列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试

从slq数据库获取数据

库存和关键限制



我是什么希望是...如果库存少于<比关键限制

这些行必须显示为橙色



并且库存== 0

行显示为Crimson



我尝试过:



 listView2.Items.Clear(); 
listView2.Columns.Clear();
listView2.Columns.Add( ID 100 );
listView2.Columns.Add( Description 150 );
listView2.Columns.Add( Stock 150 );
listView2.Columns.Add( CriticalLimit 150 );

string sql2 = @ 从tblProduct中选择*;
cm = new SqlCommand(sql2,cn);
dr = cm.ExecuteReader();
while (dr.Read()== true
{

if ((Convert.ToInt64(dr [ 9 ])< = Convert.ToInt32(dr [ 8 ]。ToString()))&& Convert.ToInt64(dr [ 9 ])> = 1

{

lst = listView2.Items.Add(dr [ 0 ]。ToString());
lst.SubItems.Add(dr [ 1 ]。ToString());
lst.SubItems.Add(dr [ 9 ]。ToString());
lst.SubItems.Add(dr [ 8 ]。ToString());

if (Convert.ToInt32(dr [ 9 ]。ToString() )== 0
{

lst.ForeColor = Color.Crimson;


}
else if (转换。 ToInt32(dr [ 9 ]。ToString())< Convert.ToInt32(dr [ 8 ]。ToString()))
{
lst.ForeColor = Color.Orange;

}
}
}
dr.Close();

解决方案





我在代码中看不到任何问题。你只需要将 listView2.View 设置为 View.Details 否则它将不会显示子项目确保你对话的字符串能够正常工作,这就是你所需要的。其余的应该按预期工作。但是,您的代码可以进行优化。如果它不起作用则发表评论然后我会帮你更多。



干杯,

AH


您好。

条件表达式中有错误:

 Convert.ToInt32(dr [9] .ToString())

永远不会被检查为== 0因为你有条件> = 1落后。



只需这样:



 // if((Convert.ToInt64(dr [9])< = Convert.ToInt32(dr [8] .ToString()))&& Convert.ToInt64(dr [9 ])> = 1)
// {

lst = listView2.Items.Add(dr [0] .ToString());
lst.SubItems.Add(dr [1] .ToString());
lst.SubItems.Add(dr [9] .ToString());
lst.SubItems.Add(dr [8] .ToString());

if(Convert.ToInt32(dr [9] .ToString())== 0)
{

lst.ForeColor = Color.Crimson;


}
else if(Convert.ToInt32(dr [9] .ToString())< Convert.ToInt32(dr [8] .ToString()))
{
lst.ForeColor = Color.Orange;

}

}
//}







BR


I am trying to
get data from slq Database
Stock and Critical limit

what i want is ...if stock is less< than critical limit
those rows must show as Orange

and is stock == 0
rows Show As Crimson

What I have tried:

listView2.Items.Clear();
listView2.Columns.Clear();
listView2.Columns.Add("ID", 100);
listView2.Columns.Add("Description", 150);
listView2.Columns.Add("Stock", 150);
listView2.Columns.Add("CriticalLimit", 150);

            string sql2 = @"Select * from tblProduct";
                cm = new SqlCommand(sql2, cn);
                dr = cm.ExecuteReader();
                while (dr.Read() == true)
                {

if ((Convert.ToInt64(dr[9]) <= Convert.ToInt32(dr[8].ToString()))&& Convert.ToInt64(dr[9]) >= 1)
               
 {

lst = listView2.Items.Add(dr[0].ToString());
lst.SubItems.Add(dr[1].ToString());
lst.SubItems.Add(dr[9].ToString());
lst.SubItems.Add(dr[8].ToString());

                    if (Convert.ToInt32(dr[9].ToString()) == 0)
                    {

                        lst.ForeColor = Color.Crimson;


                    }
                    else if (Convert.ToInt32(dr[9].ToString()) < Convert.ToInt32(dr[8].ToString()))
                    {
                        lst.ForeColor = Color.Orange;

                    }
                }
            }
            dr.Close();

解决方案

Hi,

I don`t see any problem in your code. You just need to set the listView2.View to View.Details otherwise it will not show the sub-items and also make sure your conversations to string will work, that is all you need. The rest should work as you expect. However your code can be optimized. Leave a comment if it did not work then I will help you more.

Cheers,
AH


Hi.
There is error in your conditional expression :

Convert.ToInt32(dr[9].ToString())

will never be checked as "== 0" because you have a condition ">= 1" behind.

Just do like this :

//if ((Convert.ToInt64(dr[9]) <= Convert.ToInt32(dr[8].ToString()))&& Convert.ToInt64(dr[9]) >= 1)
//{

lst = listView2.Items.Add(dr[0].ToString());
lst.SubItems.Add(dr[1].ToString());
lst.SubItems.Add(dr[9].ToString());
lst.SubItems.Add(dr[8].ToString());

        if (Convert.ToInt32(dr[9].ToString()) == 0)
        {

            lst.ForeColor = Color.Crimson;


        }
        else if (Convert.ToInt32(dr[9].ToString()) < Convert.ToInt32(dr[8].ToString()))
        {
            lst.ForeColor = Color.Orange;

        }
        
    }
//}




BR


这篇关于如果column1为&lt; C#listview为颜色行比第2列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆