2013-08-17 52 views
1

讓我首先說明我對C#非常陌生。我正在使用DataTable來顯示來自SQL數據庫的數據。如果數據庫單元格中的數據有數據,但是如果它爲空,表格的該部分不顯示,我試圖使用if else動態顯示錶格中的一行。使用C語言中的數據表使用if#

爲什麼總是打印代碼的其他部分,而不是如果單元格爲空?

這裏是我的代碼段:

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; 
+0

你可以調試,並確定什麼'dt.Rows [i] .ItemArray.GetValue(3)'包含?我懷疑你所認爲的'null'實際上是一些其他的空值:' ','''''或類似的東西。 – ethorn10

+0

@ ethon10該值完全沒有。我怎麼能做一個完全空白字段的IF ELSE?對於測試我不能只在表格的單元格中鍵入NULL?如果是這樣,當我這樣做時,3的值是{}。 –

回答

2

假設GetValue(3)通常是string,你可以試試這個:

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

至於你提到,你是新到C#,但考慮發佈有關更好的方式來建立你的HTML的另一個問題。我不會攻擊你或你選擇的早期嘗試,但是StackOverflow的好人可以幫助你更好地完成這部分(性能,可讀性等)。

+1

@OP'StringBuilder'類可能是有趣的。 –

+0

我的想法確切,但我不想聽起來太關鍵。我想幫助OP而不害怕。 – ethorn10