У меня возникли проблемы с моим VB-кодом для обновления корзины покупок сеанса . Может ли кто - нибудь помочь мне с моим кодом?
Я привязал корзину к GridView и хочу обновить столбец количества определенной строки. Кажется, у меня возникли проблемы с обновлением текстового поля. Я помещаю новое значение в текстовое поле и нажимаю ссылку Обновить, но оно не обновляется. Мои страницы заказов работают в том смысле, что товар помещается в корзину сеанса. Это страница корзины, с которой у меня возникли проблемы.
Корзину ГВ:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" GridLines="Horizontal" BorderColor="Black" BorderWidth="2px" BorderStyle="Solid"> <columns> <asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" ReadOnly="true" Visible="false"> <HeaderStyle ForeColor="White" BackColor="Black" /> <asp:BoundField DataField="itemNo" HeaderText="itemNo" ReadOnly="true" SortExpression="itemNo" Visible="True"> <HeaderStyle ForeColor="White" BackColor="Black" /> <asp:BoundField DataField="item" HeaderText="item" SortExpression="item" ItemStyle-Wrap="true" ReadOnly="true" ItemStyle-ForeColor="Black" > <HeaderStyle Width="300px" BackColor="Black" ForeColor="White" /> <ItemStyle Wrap="True" ForeColor="Black"> <asp:TemplateField HeaderText="qty" SortExpression="quantity"> <edititemtemplate> <asp:TextBox ID="txtQty" runat="server" Text='<%# Bind("quantity") %>'> <itemtemplate> <asp:Label ID="lblQty" runat="server" Text='<%# Bind("quantity") %>'> <HeaderStyle BackColor="Black" ForeColor="White" /> <asp:BoundField DataField="price" HeaderText="price" SortExpression="price" ReadOnly="true" ItemStyle-ForeColor="Black" > <HeaderStyle BackColor="Black" ForeColor="White" /> <ItemStyle ForeColor="Black"> <asp:CommandField ShowEditButton="True" />
Я был бы признателен за любую помощь в том, чтобы моя страница корзины работала так, как я намеревался. Заранее спасибо.
Что я уже пробовал:
Dim dt As DataTable Dim dr As DataRow Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not IsPostBack Then dt = Session("Cart") GridView1.DataSource = dt GridView1.DataBind() Else dt = Session("Cart") GridView1.DataSource = dt GridView1.DataBind() If GridView1.Rows.Count = 0 Then lblCart.Visible = True lblCart.Text = "Your cart is empty, but it doesn't have to be." ' lblTotal.Text = "$" & GetItemTotal() End If End If End Sub Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GridView1.RowUpdating Dim dt As DataTable = TryCast(Session("Cart"), DataTable) ' Dim dt As DataTable = Session("cart") ' dt = Session("Cart") Dim arow As GridViewRow = GridView1.Rows(e.RowIndex) ' Dim row As GridViewRow = GridView1.SelectedRow Dim index As Integer = Convert.ToInt32(e.RowIndex) 'Dim qtb As TextBox = TryCast(arow.FindControl("txtQty"), TextBox) [template field] Dim qtb As String = TryCast(arow.Cells(3).Controls(0), TextBox).Text ' Dim qtb As TextBox = GridView1.Rows(e.RowIndex).Cells(3).Controls(0) Dim strQty As String = e.NewValues(3).ToString() Dim newQty As Integer = Convert.ToInt32(strQty) ' dt.Rows(index)("quantity") = 10 ' it changes it to "10" in the row I clicked edit link 05/18/18 ' how do I get the new value in the textbox and put it where the "10" is? 'If I Then put a value In the textbox, it goes back To original value dt.Rows(index)("quantity") = newQty ' Dim dt As DataTable = TryCast(Session("Cart"), DataTable) ' dt.Rows(index)("quantity") = Integer.Parse(qtb.Text) dt.AcceptChanges() Session("Cart") = dt GridView1.EditIndex = -1 GridView1.DataSource = dt GridView1.DataBind() Label2.Text = qtb lblCart.Visible = True lblCart.Text = index ' shows row # ' edit on left side: ' Dim arow As GridViewRow = GridView1.Rows(e.RowIndex) 'Dim qtb As TextBox = GridView1.Rows(e.RowIndex).Cells(4).Controls(0) 'Dim newQty As Integer = Integer.Parse(qtb.Text) 'dt.Rows(e.RowIndex)("quantity") = newQty 'dt.AcceptChanges() 'Session("cart") = dt 'GridView1.EditIndex = -1 'GridView1.DataSource = Session("cart") 'GridView1.DataBind() End Sub Protected Sub GridView1_RowEditing(sender As Object, e As GridViewEditEventArgs) Handles GridView1.RowEditing GridView1.EditIndex = e.NewEditIndex GridView1.DataSource = dt GridView1.DataBind() End Sub Protected Sub GridView1_RowCancelingEdit(sender As Object, e As GridViewCancelEditEventArgs) Handles GridView1.RowCancelingEdit GridView1.EditIndex = -1 GridView1.DataSource = Session("Cart") GridView1.DataBind() End Sub