-1

我正在查询数据库并将值分配给我序列化并在报告中显示的对象。

事情是布尔变量在报告中显示为真或假。如何使值显示为“是”或“否”。

这是我的课

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)

4

5 回答 5

5

你没有说你是如何“报告”的......

这有帮助吗?

   Control.Text = rep.VideoOnDemand ? "Yes" : "No";
于 2013-02-12T10:46:54.400 回答
2

在对象中存储值期间进行更改确实是个坏主意。所以在网格中的 C# 级别进行

Control.Text = rep.VideoOnDemand ? "Yes" : "No";
于 2013-02-18T16:33:48.523 回答
1

您也可以在 Sql Query 中执行此操作。

例如。

选择

案例 VideoOnDemand 当 1 然后 'YES' 否则 'NO' 以 'VideoOnDemand' 结束

来自 tblxyz

于 2013-02-12T10:52:41.767 回答
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); }
    }
}

此代码可以在您的所有应用程序中重复使用,而无需重复“是”、“否”、“是”、“否”等。

最终建议:bools 应该存储在 bool 属性中,字符串应该存储在 string 属性中。

不要保留转换为字符串的布尔值:没有任何意义。

于 2014-08-20T14:23:26.987 回答
-1

在将值存储在对象中时使用三元运算符

rep.VideoOnDemand = (bool)dbreader["VideoOnDemand"] ? "Yes" : "No";  

并制作VideoOnDemandstring

public string VideoOnDemand { get; set; }

对您需要 YES/NO 的其余变量使用相同的方法

于 2013-02-12T10:46:13.200 回答