我正在查询数据库并将值分配给我在报告中序列化并显示的对象。
事情是bool变量在报告中显示为true或false。如何将值显示为“是”或“否”。
这是我的班级
public class ProductReportView
{
public int Count { get; set; }
public string ProductCode { get; set; }
public string ProductTitle { get; set; }
public string Producer { get; set; }
public bool VideoOnDemand { get; set; }
public bool PreviewScreen { get; set; }
public bool QualityCheck { get; set; }
public bool Archive { get; set; }
}
这是我分配值的方式
OleDbDataReader dbreader = cmd.ExecuteReader();
while (dbreader.Read())
{
Console.WriteLine("Record " + totalCount++);
ProductReportView rep = new ProductReportView();
rep.Count = ++totalCount;
rep.ProductCode = (string)dbreader["CODE"];
rep.ProductTitle = (string)dbreader["TITLE"];
rep.Producer = (string)dbreader["PRODUCER"];
rep.VideoOnDemand = (bool)dbreader["VideoOnDemand"];
rep.PreviewScreen = (bool)dbreader["PreviewLibraryChecked"];
rep.QualityCheck = (bool)dbreader["QualityCheck"];
rep.Archive = (bool)dbreader["Archive"];
lst.Add(rep);
}
这些值基于选中和取消选中的复选框(VideoOnDemand,PreviewScreen QualityCheck,Archive)
答案 0 :(得分:4)
你没有说你是如何'报道'......
这有帮助吗?
Control.Text = rep.VideoOnDemand ? "Yes" : "No";
答案 1 :(得分:2)
在将值存储在对象期间进行更改确实是一个坏主意。所以在网格中的C#级别进行
Control.Text = rep.VideoOnDemand ? "Yes" : "No";
答案 2 :(得分:1)
您也可以在Sql Query中执行此操作。
例如
选择
案例VideoOnDemand 当1然后'是' 别的'不' 结束为'VideoOnDemand'
来自tblxyz
答案 3 :(得分:0)
我的方法有4个简单的属性,可以重用和清理代码:
public class ProductReportView
{
public int Count { get; set; }
public string ProductCode { get; set; }
public string ProductTitle { get; set; }
public string Producer { get; set; }
public bool VideoOnDemand { get; set; }
public bool PreviewScreen { get; set; }
public bool QualityCheck { get; set; }
public bool Archive { get; set; }
private string toYesNo(bool b)
{
return b ? "Yes" : "No";
}
public string VideoOnDemandString
{
get { return this.toYesNo(this.VideoOnDemand); }
}
public string PreviewScreenString
{
get { return this.toYesNo(this.PreviewScreen); }
}
public string QualityCheckString
{
get { return this.toYesNo(this.QualityCheck); }
}
public string ArchiveString
{
get { return this.toYesNo(this.Archive); }
}
}
此代码可以在您的所有应用程序中重复使用,而不会重复“是”,“否”,“是”,“否”等。
最终建议:bool应存储在bool属性中,字符串应存储在字符串属性中。
不要将bool值保持转换为字符串:没有任何意义。
答案 4 :(得分:-1)
将值存储在对象中时使用三元运算符
rep.VideoOnDemand = (bool)dbreader["VideoOnDemand"] ? "Yes" : "No";
将VideoOnDemand
设为string
public string VideoOnDemand { get; set; }
对其他需要YES / NO
的变量使用相同的方法