1

让我首先声明我对 C# 非常陌生。我正在使用 DataTable 来显示来自 SQL 数据库的数据。如果数据库单元格中的数据有数据但如果它为空,则表的该部分不会显示,我正在尝试使用 if else 动态显示表中的一行。

为什么它总是打印代码的 else 部分,即使单元格为空也不打印?

这是我的代码的一部分:

C#

DataTable dt = new DataTable();
    PullDataConn.Open();
    dt.Load(cmd.ExecuteReader());
    PullDataConn.Close();

    int rowCount = dt.Rows.Count;

    string html = "";

    for (int i = 0; i < rowCount; i++)
    {
        html += "<div class='divContainer'>" + 
                    "<table class='resultsTable1'>" + 
                    "<tr><td colspan='2' class='tdCoName'>";
        html += dt.Rows[i].ItemArray.GetValue(0);
        html += "</td></tr>" + 
                    "<tr><td class='contactCat'>HotLine</td>" +
                    "<td class='tdHeadingPadding'>";
        html += dt.Rows[i].ItemArray.GetValue(1);
        html += "</td></tr>" +
                    "<tr><td class='contactCat'>e-Mail</td>" +
                    "<td class='tdHeadingPadding'>";
        html += dt.Rows[i].ItemArray.GetValue(2);
        html += "</td></tr>";

        if (dt.Rows[i].ItemArray.GetValue(3) == null)
        {
            html += "<tr><td colspan='2' style='height:10px;'></td></tr></table></div>";
        }
        else
        {
            html += "<tr><td class='contactCat'>Other</td><td class='tdHeadingPadding'>";
            html += dt.Rows[i].ItemArray.GetValue(3);
            html += "</td></tr><tr><td colspan='2' style='height:10px;'></td></tr></table></div>";
        }

    }

    ResultsDiv.InnerHtml += html;
4

1 回答 1

2

假设GetValue(3)通常是 a string,你可以试试这个:

if (string.IsNullOrEmpty(dt.Rows[i].ItemArray.GetValue(3).ToString())) {
   // hide it
} else {
   // show it
}

正如您所提到的,您是 C# 的新手,但考虑发布另一个关于构建 html 的更好方法的问题。我不是在攻击你或你选择的早期尝试,但 StackOverflow 的好人绝对可以帮助你使这部分更好(性能、可读性等)。

于 2013-08-17T04:01:42.867 回答