2017-09-20 33 views
0

大家好晚上如何在webform中顯示ArrayList

我有一個表中包含字符串類型值的錯誤列。該列中的每個單元格可能包含多個逗號分隔的故障(例如:CPU不是wkg,HDD損壞等)。我的要求是讀取每個單元格的值,將每個錯誤存儲在一個ArrayList中,然後打印一個表格以顯示兩列(faultname,noOftimeItccured)。爲了實現這一點,我對數組列表進行排序,然後查找每個故障的數量。 問題我面臨 1.我沒有得到想要的結果(邏輯中可能存在一些問題) 2.無法在webform中顯示錶格格式的結果。 3.結果應顯示在網格視圖之後,而其顯示在菜單欄之上。

請指導我獲得所需的結果,輸出或一些替代方法來實現上述問題。

在此先感謝。

 if (ddlSparesInfo.SelectedValue == "Fast Moving Spares") 
     { 
      lblMessage.Text = ""; 
      try 
      { 
       SqlCommand cmd = new SqlCommand("getFastMovingSpares", DBConn.Conn); 
       DBConn.OpenConn(); 
       using (SqlDataReader dr = cmd.ExecuteReader()) 
       { 
        ArrayList faults = new ArrayList(); 
        while (dr.Read()) 
        { 
         string cellValue = dr.GetString(7); 
         string[] splitFaults = cellValue.Split(','); 
         for (int i = 0; i < splitFaults.Length; i++) 
         { 
          faults.Add(splitFaults[i]); 
         } 
        } 

        faults.Sort(); 
        int count = 1; 
        for (int i = 1; i < faults.Count; i++) 
        { 
         if (faults[i - 1] == faults[i]) 
         { 
          count++; 
         } 
         else 
         { 
          Response.Write("<table>"); 
          Response.Write("<tr>"); 
          Response.Write("<td>"); 
          Response.Write("<p>" + faults[i] + "<p>"); 
          Response.Write("</td>"); 
          Response.Write("<td>"); 
          Response.Write("<p>" + count + "<p>"); 
          Response.Write("</td>"); 
          Response.Write("</tr>"); 
          Response.Write("</table>"); 
          count = 0; 
         } 

        } 
       } 
      } 
      catch (Exception) 
      { 

       throw; 
      } 
      finally 
      { 
       DBConn.CloseConn(); 

      } 

     } 
    } 

Screenshot of Output

Screenshot of output after making changes

回答

0

您可以使用Dictionary<key,value>存儲故障,並計數。

if (ddlSparesInfo.SelectedValue == "Fast Moving Spares") 
      { 
       lblMessage.Text = ""; 
       try 
       { 
        SqlCommand cmd = new SqlCommand("getFastMovingSpares", DBConn.Conn); 
        DBConn.OpenConn(); 
        using (SqlDataReader dr = cmd.ExecuteReader()) 
        { 

         Dictionary<string, int> faults = new Dictionary<string, int>(); 
         while (dr.Read()) 
         { 
          string cellValue = dr.GetString(7); 
          string[] splitFaults = cellValue.Split(','); 
          for (int i = 0; i < splitFaults.Length; i++) 
          { 
           string currentFault = splitFaults[i]; 
           if (faults.Keys.Any(x => x == currentFault)) 
           { 
            faults[currentFault] += 1; 
           } 
           else 
           { 
            faults.Add(currentFault, 1); 
           } 
          } 
         } 


         Response.Write("<table>"); 
         foreach (var fault in faults) 
         { 

          Response.Write("<tr>"); 
          Response.Write("<td>"); 
          Response.Write("<p>" + fault.Key + "<p>"); 
          Response.Write("</td>"); 
          Response.Write("<td>"); 
          Response.Write("<p>" + fault.Value + "<p>"); 
          Response.Write("</td>"); 
          Response.Write("</tr>"); 
         } 

         Response.Write("</table>"); 
        } 
       } 
       catch (Exception) 
       { 

        throw; 
       } 
       finally 
       { 
        DBConn.CloseConn(); 

       } 

} 
+0

由於艾哈邁德我是能夠實現使用詞典所期望的輸出,但仍然我無法找出如何以表格格式顯示keyvaluepair上從C#代碼或任何其它可替換的網絡表單。 –

+0

填充字典後,在另一個循環中迭代字典項目。 – ahmet

+0

嗨艾哈邁德我已經上傳的代碼和截圖webform pls指導我 1.如何顯示字典的輸出作爲表 2.輸出顯示在菜單欄上方如何避免這 –