c#相当于sql';s";其中的值为(';a';,';b';,';c';)”;
我基本上需要根据某些值更改Gridview的行颜色。以下是我所拥有的:c#相当于sql';s";其中的值为(';a';,';b';,';c';)”;,c#,asp.net,gridview,C#,Asp.net,Gridview,我基本上需要根据某些值更改Gridview的行颜色。以下是我所拥有的: if ((String)DataBinder.Eval(e.Row.DataItem, "STATUS") == "A" || (String)DataBinder.Eval(e.Row.DataItem, "STATUS") == "B" || (String)DataBinder.Eval(e.Row.DataItem, "STATUS") == "C") { e.Row.BackColor = Color.Ye
if ((String)DataBinder.Eval(e.Row.DataItem, "STATUS") == "A" || (String)DataBinder.Eval(e.Row.DataItem, "STATUS") == "B" || (String)DataBinder.Eval(e.Row.DataItem, "STATUS") == "C")
{
e.Row.BackColor = Color.Yellow;
}
我正在寻找一种更清晰(或者说更好)的方法,类似于sql中的方法,而不必使用| |运算符:
IF STATUS in('A','B','C')
使用LINQ,例如:
如果要忽略案例,则:
if (new[] {"A", "B", "C"}
.Contains((String) DataBinder.Eval(e.Row.DataItem, "STATUS"),
StringComparer.InvariantCultureIgnoreCase))
{
}
使用LINQ,例如:
如果要忽略案例,则:
if (new[] {"A", "B", "C"}
.Contains((String) DataBinder.Eval(e.Row.DataItem, "STATUS"),
StringComparer.InvariantCultureIgnoreCase))
{
}
您可以尝试为此任务使用set, 如果它在运行时不会更改,则静态构建它 或者动态构建它:
var statuses = new HashSet<string>
{
"A",
"B",
"C"
}
您可以尝试为此任务使用set, 如果它在运行时不会更改,则静态构建它 或者动态构建它:
var statuses = new HashSet<string>
{
"A",
"B",
"C"
}
实现目标的一种方法是创建一个项目的临时
列表
,并在条件列表中使用列表
的包含
方法:
var yellowStatuses = new List<string> { "A", "B", "C" };
var currentStatus = (String)DataBinder.Eval(e.Row.DataItem, "STATUS");
if (yellowStatuses.Contains(currentStatus))
e.Row.BackColor = Color.Yellow;
var yellowstatus=新列表{“A”、“B”、“C”};
var currentStatus=(字符串)DataBinder.Eval(e.Row.DataItem,“STATUS”);
if(黄色状态包含(当前状态))
e、 Row.BackColor=Color.Yellow;
编辑:@Habib比我先找到答案,而且更干净。:) 实现目标的一种方法是创建项目的临时
列表
,并在条件列表中使用列表
的包含
方法:
var yellowStatuses = new List<string> { "A", "B", "C" };
var currentStatus = (String)DataBinder.Eval(e.Row.DataItem, "STATUS");
if (yellowStatuses.Contains(currentStatus))
e.Row.BackColor = Color.Yellow;
var yellowstatus=新列表{“A”、“B”、“C”};
var currentStatus=(字符串)DataBinder.Eval(e.Row.DataItem,“STATUS”);
if(黄色状态包含(当前状态))
e、 Row.BackColor=Color.Yellow;
编辑:@Habib比我先找到答案,而且更干净。:) 这不是实现这一点的最佳方式,但我认为这个linq查询可以帮助您
if ((new string[] {"A","B","C"}).Any(x=>x==(String)DataBinder.Eval(e.Row.DataItem, "STATUS")))
这不是实现这一点的最佳方式,但我认为这个linq查询可以帮助您
if ((new string[] {"A","B","C"}).Any(x=>x==(String)DataBinder.Eval(e.Row.DataItem, "STATUS")))
您可以使用字典方法进行此操作。很好的一点是,您只需将它维护在一个逻辑可以集中的地方
var colorStatus = new Dictionary<string,Color>();
colorStatus["A"] = Color.Yellow;
colorStatus["B"] = Color.Yellow;
colorStatus["C"] = Color.Yellow;
您可以使用字典方法进行此操作。很好的一点是,您只需将它维护在一个逻辑可以集中的地方
var colorStatus = new Dictionary<string,Color>();
colorStatus["A"] = Color.Yellow;
colorStatus["B"] = Color.Yellow;
colorStatus["C"] = Color.Yellow;
正是我想要的。一定要和林克的事扯上关系!正是我想要的。一定要和林克的事扯上关系!