如果column1为< C#listview为颜色行比第2列 [英] C# listview to color rows if column1 is < than column2
本文介绍了如果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 thelistView2.View
toView.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为< C#listview为颜色行比第2列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文