#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