2016-01-17 3 views
0

Я пишу shopping cart в ASP.NET, и я хочу, чтобы пользователи заполнили количество, которое они хотят в текстовом поле, и поместите этот счет в файл cookie, чтобы я мог пополнить их счет когда они возвращаются в свою корзину покупок. Я использую кнопку обновления, чтобы обновить файл cookie с сохраненными значениями, однако при возврате страницы он заполняет текстовое поле предыдущим значением. кто-нибудь знает, как решить эту проблему? Мой Обновить код кнопки:ASP.NET Текстовое поле теряет значение после обратной передачи

If Request.Cookies("Aantal") Is Nothing Then 
     Dim objCookieAantal As New HttpCookie("Aantal") 

     For x = 0 To dgvWinkelmand.Rows.Count - 1 
      Dim txtAantal As TextBox = CType(dgvWinkelmand.Rows(x).Cells(3).FindControl("txtAantal"), TextBox) 
      objCookieAantal.Values.Add(dgvWinkelmand.Rows(x).Cells(0).Text, txtAantal.Text) 

     Next 

     objCookieAantal.Expires = Now.AddDays(30) 

     Response.Cookies.Add(objCookieAantal) 

     'fill 
     If IsPostBack Then 

      For x = 0 To dgvWinkelmand.Rows.Count - 1 
       Dim txtAantal As TextBox = CType(dgvWinkelmand.Rows(x).Cells(3).FindControl("txtAantal"), TextBox) 
       txtAantal.Text = objCookieAantal.Values.Item(dgvWinkelmand.Rows(x).Cells(0).Text) 

      Next 
     End If 
    Else 

     Dim objCookieAantal2 As HttpCookie = Request.Cookies("Aantal") 

     For x = 0 To dgvWinkelmand.Rows.Count - 1 
      Dim txtAantal As TextBox = CType(dgvWinkelmand.Rows(x).Cells(3).FindControl("txtAantal"), TextBox) 
      objCookieAantal2.Values.Remove(dgvWinkelmand.Rows(x).Cells(0).Text) 
      objCookieAantal2.Values.Add(dgvWinkelmand.Rows(x).Cells(0).Text, txtAantal.Text) 

     Next 

     Response.Cookies.Add(objCookieAantal2) 

     'fill 
     If IsPostBack Then 

      For x = 0 To dgvWinkelmand.Rows.Count - 1 
       Dim txtAantal As TextBox = CType(dgvWinkelmand.Rows(x).Cells(3).FindControl("txtAantal"), TextBox) 
       txtAantal.Text = objCookieAantal2.Values.Item(dgvWinkelmand.Rows(x).Cells(0).Text) 

      Next 
     End If 
    End If 

Мой код загрузки страницы, чтобы заполнить GridView:

 If IsPostBack Then 

      For x = 0 To dgvWinkelmand.Rows.Count - 1 
       Dim txtAantal As TextBox = CType(dgvWinkelmand.Rows(x).Cells(3).FindControl("txtAantal"), TextBox) 
       txtAantal.Text = objCookieAantal.Values.Item(dgvWinkelmand.Rows(x).Cells(0).Text) 

      Next 
     End If 

Заранее спасибо! (я кодируюсь в VB.NET)

+0

Upss Я случайно удалил комментарий: / –

ответ

0

Вы были правы, мне пришлось использовать If not ispostback, теперь единственная проблема заключается в том, что он не заполняет количество, когда я удаляю продукт, мой код для удаление:

If (e.CommandName = "Verwijder") Then 
     If dgvWinkelmand.Rows.Count = 1 Then 
      Dim objCookie As HttpCookie = Request.Cookies("Winkelmand") 

      objCookie.Values.Remove(dgvWinkelmand.Rows(0).Cells(0).Text) 

      Response.Cookies.Add(objCookie) 

      dgvWinkelmand.Visible = False 
      btnKassa.Visible = False 
      imgShoppingCart.Visible = True 
      lblLeeg.Visible = True 


     Else 

      lblLeeg.Visible = False 
      imgShoppingCart.Visible = True 
      'bepaal row index opgeslagen in CommandArgument eigenschap 
      Dim index As Integer = Convert.ToInt32(e.CommandArgument) 
      Dim intTeVerwijderenItem As Integer 

      ' bepaal rij dat button bevat van rows collectie 
      Dim row As GridViewRow = dgvWinkelmand.Rows(index) 

      'Verwijder item van cookie 
      Dim objCookie As HttpCookie = Request.Cookies("Winkelmand") 

      intTeVerwijderenItem = Integer.Parse(dgvWinkelmand.Rows(index).Cells(0).Text) 
      objCookie.Values.Remove(intTeVerwijderenItem.ToString) 

      Response.Cookies.Add(objCookie) 

      dgvWinkelmand.DataBind() 

      'fill 
      Dim objCookieAantal As HttpCookie = Request.Cookies("Aantal") 
      If IsPostBack Then 

       For x = 0 To dgvWinkelmand.Rows.Count - 1 
        Dim txtAantal As TextBox = CType(dgvWinkelmand.Rows(x).Cells(3).FindControl("txtAantal"), TextBox) 
        txtAantal.Text = objCookieAantal.Values.Item(dgvWinkelmand.Rows(x).Cells(0).Text) 

       Next 
      End If 
     End If 

    End If