2017-09-04 26 views
0

下面是我的代碼,這如果這兩個檢查擴展和基於擴展將進入閱讀方法的問題dt和dt1行數據以doc和docx結尾,然後它轉到讀取文件方法 如果一個是doc,另一個是docx,反之亦然,它將顯示一條消息,即所選文檔應該具有相同的擴展名。防止插入時,在這兩個數據表的擴展是不同的,繼續當在數據表擴展使用ASP.NET的C#是相同的插入

假設如果我採取3個douments在一對,這意味着完全6讓我們假設在兩個DataTable的數據以這種方式

dt dt1 
doc docx 
doc doc 
docx doc 
doc docx 

然後爲第一個它應該顯示錯誤消息爲第二個它應該插入,併爲第三和第四它不應該插入,但它不會被插入我來知道問題是與返回在其他條件,但如果我不使用返回後進入其他塊它執行我的下一行if code.How can reslove this

 if (ddlstype.SelectedValue == "3") 
     { 
      if (dt.Rows.Count > 0 && dt1.Rows.Count > 0) 
      { 
       if (dt.Rows[0]["fname"].ToString().ToLower().EndsWith(".docx") && dt1.Rows[0]["lname"].ToString().ToLower().EndsWith(".docx")) 
       { 
        ReadFiles(); 
       } 

       else if (dt.Rows[0]["fname"].ToString().ToLower().EndsWith(".doc") && dt1.Rows[0]["lname"].ToString().ToLower().EndsWith(".doc")) 
       { 
        ReadFiles(); 
       } 
       else if (dt.Rows[0]["fname"].ToString().ToLower().EndsWith(".doc") && dt1.Rows[0]["lname"].ToString().ToLower().EndsWith(".docx")) 
       { 
        lblerrmsg.Visible = true; 
        lblerrmsg.Text = "Both the selected Documents Should Have Same Extensions"; 
        return; 
       } 
       else if (basedt.Rows[0]["Bfname"].ToString().ToLower().EndsWith(".docx") && draftdt.Rows[0]["lname"].ToString().ToLower().EndsWith(".doc")) 
       { 
        lblerrmsg.Visible = true; 
        lblerrmsg.Text = "Both the selected Documents Should Have Same Extensions"; 
        return; 
       } 
      } 
     } 
+0

你的例子假定4行'dt'和'dt1'但沒有循環迭代通的行。你所要做的就是試着通過'dt.Rows [0]'和'dt1.Rows [0]'比較第一行的數據。同樣根據你的邏輯和樣本數據,它將從第二個'ifse'塊返回,因爲你在'dt'中有'doc',在'dt1'中有'docx'。所以你需要使用循環並從else if塊中移除返回語句。 –

+0

已經我使用循環和分離該選定的文件到兩個DataTable 如果兩個數據表中的行含有相同的擴展應該插入否則,如果我們在上面的例子中DT看到 第二行應該不會被插入DT1具有相同擴展,但它沒有被插入,它直接顯示錯誤信息 – bargavik93

+0

如果你能顯示使用循環的代碼,這將是一件好事。無論你共享什麼代碼,我都會看到你正在試圖比較兩個表中第一行的數據。並根據您的示例數據,第一行不符合ReadFiles的標準,這就是爲什麼它返回到其他位置,如果從那裏返回。您是否嘗試調試代碼並理解查看給定示例數據的代碼執行方式? –

回答

0

您的代碼存在多個問題,我正在嘗試爲他們提供如下解決方案。我建議您根據您在問題中分享的代碼和詳細信息進行提示。

在具有for循環,你不需要創建DataRow實例代碼。

for (int i = 0; i < Request.Files.Count; i++) 
{ 
    HttpPostedFile postedFile = Request.Files[i]; 
    if (postedFile.ContentLength > 0) 
    { 
     string fileName = Path.GetFileName(postedFile.FileName); 
     string extension = Path.GetExtension(postedFile.FileName); 
     if (fileName.Contains("-b") || fileName.Contains("-B")) 
     { 
      dt.Rows.Add(fileName.ToLower().Replace("-b", "")); 
     } 
     if (fileName.Contains("-t") || fileName.Contains("-T")) 
     { 
      dt1.Rows.Add(fileName.ToLower().Replace("-t", "")); 
     } 
    } 
} 

上面的代碼假定您將獲得具有在其中-bt他們的名字,這樣既dtdt1將有相同數量的行文件的數目相等。 有了這個假設,我建議你迭代這些表的行並根據行的內容執行適當的活動。

if (ddlstype.SelectedValue == "3") 
{ 
    if (dt.Rows.Count > 0 && dt1.Rows.Count > 0) 
    { 
     for (var i = 0; i < dt.Rows.Count; i++) 
     { 
      var fileName1 = dt.Rows[i]["fname"].ToString().ToLower(); 
      var fileName2 = dt1.Rows[i]["fname"].ToString().ToLower(); 
      if ((fileName1.EndsWith(".docx") && fileName2.EndsWith(".docx")) 
        || 
       (fileName1.EndsWith(".doc") && fileName2.EndsWith(".doc"))) 
      { 
       ReadFiles(); 
      } 
      else 
      { 
       lblerrmsg.Visible = true; 
       lblerrmsg.Text = "Both the selected Documents Should Have Same Extensions"; 
      } 
     } 
    } 
} 

我看到有數據表basedtdraftdt。我已經從我的代碼中刪除,因爲我不確定它們爲什麼被使用,我沒有看到它們的相關性。

該解決方案將幫助您解決問題。

+0

沒有它沒有工作 – bargavik93

+0

定義「它不工作」。任何錯誤?你調試了代碼嗎?你瞭解我的代碼的邏輯嗎? –

相關問題