ASP.NET Текстовое поле GridView Сброшено на 0

#asp.net #vb.net

#asp.net #vb.net

Вопрос:

у меня есть одно текстовое поле в grivew, а остальное — это поле данных ad по умолчанию в gridview, и
я ввожу данные в gridview с помощью ViewState Данные вводятся плавно, и когда я ввожу количество в текстовом поле, которое находится в Gridwew, оно введено, но я нажимаю на кнопку сохранения, она обновляет текстовое поле до 0, а остальные все данные остаютсято же самое, только сброс значения текстового поля, даже когда я пытаюсь ввести второй продукт в gridview, он снова обновляет текстовое поле до 0, даже если ранее я вводил любое количество. я не знаю, как это решить,
вот код ниже на странице загрузки

   Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    If Not IsPostBack Then
        Dim dt As New DataTable()
        dt.Columns.AddRange(New DataColumn(3) {New DataColumn("ID"), New DataColumn("Item"), New DataColumn("Price"), New DataColumn("txtQuantity")})
        ViewState("Customers") = dt

    End If
End Sub
  

Событие нажатия кнопки

 Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim dt As DataTable = DirectCast(ViewState("Customers"), DataTable)
    dt.Rows.Add(TextBox2.Text.Trim, itemcode.Trim(), 1000)
    ViewState("Customers") = dt
    GridView1.DataSource = dt
    GridView1.DataBind()
End Sub
  

и в режиме конструктора

 <Columns>
     <asp:BoundField DataField="ID" HeaderText="ID" ItemStyle-Width="10%"/>
    <asp:BoundField DataField="Item" HeaderText="Item" ItemStyle-Width="50%"/>
    <asp:BoundField DataField="Price" HeaderText="Price" ItemStyle-CssClass="price" ItemStyle-Width="10%"/>

    <asp:TemplateField HeaderText="Quantity"  ItemStyle-Width="10%">
        <ItemTemplate>
            <asp:TextBox ID="txtQuantity" AutoPostBack="false"  runat="server" ></asp:TextBox>

        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Total" ItemStyle-Width="20%">
        <ItemTemplate>
            <asp:Label ID="lblTotal" AutoPostBack="false" runat="server" Text="0"></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
</Columns>
  

Кроме txtQuantity и lblTotal, все остальные значения остаются прежними, но только текстовое поле и lblTotal сбрасываются на 0

Вот Java-скрипт, который я использую для умножения столбца gridview

 <script type="text/javascript">
$(function () {
    $("[id*=txtQuantity]").val("0");
});
$("body").on("change keyup", "[id*=txtQuantity]", function () {
    //Check whether Quantity value is valid Float number.
    var quantity = parseFloat($.trim($(this).val()));
    if (isNaN(quantity)) {
        quantity = 0;
    }

    //Update the Quantity TextBox.
    $(this).val(quantity);

    //Calculate and update Row Total.
    var row = $(this).closest("tr");
    $("[id*=lblTotal]", row).html(parseFloat($(".price", row).html()) * parseFloat($(this).val()));

    //Calculate and update Grand Total.
    var grandTotal = 0;
    $("[id*=lblTotal]").each(function () {
        grandTotal = grandTotal   parseFloat($(this).html());
    });
    $("[id*=lblGrandTotal]").html(grandTotal.toString());
});
  

Ответ №1:

В разметке lblTotal вы устанавливаете Text=»0″, поэтому при обратной передаче (нажатие кнопки) он будет отображаться

Комментарии:

1. но я удаляю Java script, но все равно он показывает количество 0