2017-07-03 25 views
0

每當按鈕事件觸發時,我的列表變空並開始添加第一個索引中的項目。它不保留之前點擊添加的舊項目。我試圖將每個按鈕單擊的列表中的某些元素的ID存儲在哈希集中以避免重複。請好心幫助我這個列表在按鈕事件上變爲空

這是我的代碼。

List<int> venues = new List<int>(); 
HashSet<int> hashset = new HashSet<int>(); 


       id = Convert.ToInt32(Request.QueryString["id"].ToString()); 


       venues.Add(id); 

       foreach (int item1 in venues) 
       { 



        if (!hashset.Add(item1)) 
        { 
         Response.Write("<script>alert('Duplicate Items');</script>"); 
         break; 
        } 

        else 
        { 

         foreach (var items in venues) 
         { 
          con.Open(); 
          SqlCommand cmd = con.CreateCommand(); 
          cmd.CommandType = CommandType.Text; 
          cmd.CommandText = "select * from Venues where VenueID = '" + items + "'"; 
          cmd.ExecuteNonQuery(); 
          DataTable dt = new DataTable(); 
          SqlDataAdapter ds = new SqlDataAdapter(cmd); 
          ds.Fill(dt); 
          foreach (DataRow dr in dt.Rows) 
          { 
           Name = dr["Name"].ToString(); 
           Address = dr["Address"].ToString(); 
           Picture = dr["Picture"].ToString(); 
           Price = dr["Price"].ToString(); 
          } 
          con.Close(); 
          if (Request.Cookies["aa"] == null) 
          { 
           Response.Cookies["aa"].Value = Name.ToString() + "," + Address.ToString() + "," + Picture.ToString() + "," + Price.ToString(); 
           Response.Cookies["aa"].Expires = DateTime.Now.AddDays(1); 

          } 
          else 
          { 
           Response.Cookies["aa"].Value = Request.Cookies["aa"].Value + "|" + Name.ToString() + "," + Address.ToString() + "," + Picture.ToString() + "," + Price.ToString(); 
           Response.Cookies["aa"].Expires = DateTime.Now.AddDays(1); 
          } 
         } 
        } 
       } 

      } 
+0

嗨!你能提供更多關於你的問題的信息嗎?從您共享的代碼片段中,我不認爲數據會持久保存到數據庫 – user3402754

+0

@ user3402754即時嘗試限制用戶選擇重複元素進行購物。我正在使用該項目的ID填充我的列表。然後即時通訊轉移他們的哈希集,以確保沒有重複的ID存在。我從數據庫中提取數據並將其插入到cookie中。除了這個問題,每件事情都很好。在每次點擊時,我的列表都會刷新並清空。我不知道爲什麼 – Ahsan

+0

@ user3402754我應該在這裏使用回發檢查嗎?實際上我是新來的asp。 :| – Ahsan

回答

0

如果這是整個onClick事件函數,則應該在函數範圍之外創建列表。 例如,在Page_Load中創建清單

+0

我也試過,但它並沒有伎倆...... – Ahsan

0

這可能與狀態管理有關。 http的無狀態意味着你失去了任何形式的狀態(例如,在請求 - 響應週期中創建的變量)嘗試使用會話或任何其他狀態管理技術在點擊之間保持列表。 Session["venues"] = venues將該列表放入會話中。和var venues = (list<int>)Session["venues"]從會話中讀取列表

+0

if(Session [「venue」] == null){ Session [「venue」] = venue; } 這將只保存第一個值。問題將保持不變,因爲我的名單不保留其以前的值 – Ahsan

0

我想通了我的自我。我使用靜態列表來解決問題。感謝大家!