2016-02-26 45 views
0

我正在創建一個web應用程序以將一個excel文件導入MS Dynamics Crm。這裏是代碼片段C#如果Else Inside For Loop沒有工作

for (i = 0; i < dt.Rows.Count; i++) 
{ 
    if (dt.Rows[i][3].ToString() != String.Empty) 
    { 
     try 
     { 
      Entity contractline = new Entity("new_contractline"); 
      contractline["new_lineitem"] = dt.Rows[i][1].ToString(); 
      contractline["new_sublineitem"] = dt.Rows[i][3].ToString(); 

      createChildData = service.Create(contractline); 

      string guidString = createChildData.ToString(); 
      guidRecord[i] = guidString; 

     } 

     catch (Exception ex) 
     { 

     } 

    } 
    else if (dt.Rows[i][3].ToString() == string.Empty) /**THIS BLOK BELOW WON'T FIRE **/ 
    { 
     try 
     { 
      Entity contractline = new Entity("new_contractline"); 
       contractline["new_lineitem"] = dt.Rows[i][2].ToString(); 
       contractline["new_sublineitem"] = dt.Rows[i][3].ToString(); 
       contractline["new_quantity"] = "33"; 
      service.Create(contractline); 
     } 
     catch (Exception ex) 
     { 
     } 
    } 

的問題是,當dt.Rows[i][3]是空的else if塊不火。可能是什麼問題呢?

+0

在異常處理程序中添加Trace.Writeline以查看是否正在處理異常。 –

+0

是'dt.Rows [i] [3]'NULL'的值還是空字符串? – Steve

+0

@Steve:我不確定,在excel領域它是空的。所以,當我做這個'dt.Rows [我] [3] .ToString()'我想我得到一個空不是空。 –

回答

2

爲什麼不只是做else?如果你沒有其他別的東西 - 如果。

if (dt.Rows[i][3].ToString() != String.Empty) 

如果.ToString()爲空則會觸發。但是,如果dt.Rows[i][3]爲空,您將在此處獲得例外,因爲您無法在空對象上使用ToString()。如果您在此代碼塊之外嘗試捕獲,我建議您檢查它,因爲dt.Rows[i][3]可能爲空,並且拋出異常。

如果您有任何其他別的,如果,你應該使用

else if (string.IsNullOrWhiteSpace(dt.Rows[i][3].ToString())) 

,改變你,如果塊(其實我建議你這樣做在任何情況下)

if (!string.IsNullOrWhiteSpace(dt.Rows[i][3].ToString())) 

原因是爲並非所有的空間實際上都是空格鍵字符。您可能會得到其他white space characters,它不會觸發您的String.Empty塊,因爲它不是空的。這將匹配您的手機可能擁有的許多空間。這也將捕獲隱形的非空格空間。一個例子是相當於HTML代碼&nbsp;(非破壞性空間),它實際上不是空格鍵空間(並且不會匹配「」),但會佔用空間。

+0

謝謝,我知道問題不是來自其他問題。這是我的錯誤,因爲沒有在這條線上放置一個正確的值' contractline [「new_quantity」] =「33」;' –

0

如果只是使用......否則與string.IsNullOrEmpty(S)像下面....

if (string.IsNullOrEmpty(dt.Rows[i][3].ToString()) == true) 
{ 
    // True. 
    Console.WriteLine("Null or empty"); 
} 
else 
{ 
    Console.WriteLine("Not null and not empty"); 
} 
0

你有沒有試過以下? else if(dt.Rows [i] [3] .ToString()。Trim()==「」)