[英]how to multiply two columns in gridview asp.net c#
我有gridview i我想將比率乘以數量以獲得總和的4列我不怎么做,請您幫我。 這是代碼
<asp:GridView ID="GridView1" runat="server"
onrowdatabound="GridView1_RowDataBound" onselectedindexchanged="GridView1_SelectedIndexChanged"
>
<Columns>
<asp:TemplateField HeaderText="Item Name">
<ItemTemplate>
<asp:DropDownList ID="cbGvProd" runat="server" Height="16px" Width="200px">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Quantity">
<ItemTemplate>
<asp:TextBox ID="tbQty" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Rate">
<ItemTemplate>
<asp:TextBox ID="tbRate" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Amount">
<ItemTemplate>
<asp:TextBox ID="tbAmount" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
碼:
protected void Page_Load(object sender, EventArgs e)
{
SetGrid();
}
public void SetGrid()
{
DataTable tdTemp = new DataTable("TSno");
DataColumn dc = new DataColumn("TDc");
tdTemp.Columns.Add(dc);
for (int a = 0; a <= 24; a++)
{
tdTemp.Rows.Add(a);
}
tdTemp.AcceptChanges();
GridView1.DataSource = tdTemp;
GridView1.DataBind();
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
for (int i = 0; i < GridView1.Rows.Count; i++)
{
int qty = Convert.ToInt32(GridView1.Rows[i].Cells[1].ToString());
int rate= Convert.ToInt32(GridView1.Rows[i].Cells[2].ToString());
int total=qty * rate;
GridView1.Rows[i].Cells[3].Text = total.ToString();
}
}
添加模板字段以獲取總計,無需在RowDataBound
上進行計算
<asp:TemplateField HeaderText="Total">
<ItemTemplate>
<asp:Label ID="lblProductTotal" runat="server"
Text='<%# ((Convert.ToInt32(Eval("Quantity")))*(Convert.ToInt32(Eval("Price"))))%>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateField>
用您要使用的列替換“ Quantity
和Price
”,即來自數據集或數據表的含義
希望這會幫助你。
以下是使用jQuery的示例。 查看下面的代碼,了解其工作原理,然后對應用程序進行更改
后面的代碼:
public partial class GridTwo : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
List<OrderLineItem> lineItems = new List<OrderLineItem>();
lineItems.Add(new OrderLineItem { Price = 10.00M, Quantity = 0, ItemTotal = 0.00M });
lineItems.Add(new OrderLineItem { Price = 100.00M, Quantity = 0, ItemTotal = 0.00M });
lineItems.Add(new OrderLineItem { Price = 5.00M, Quantity = 0, ItemTotal = 0.00M });
GridView1.DataSource = lineItems;
GridView1.DataBind();
}
}
public class OrderLineItem
{
public decimal Price { get; set; }
public int Quantity { get; set; }
public decimal ItemTotal { get; set; }
}
.ASPX:
<head runat="server">
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
$(".QuantityClass").on('change keyup paste', function () {
//Ctrl+Shift+J in Google Chrome to bring up the console which allows you to debug javascript
debugger;
var textBox = this;
var quantity = $(textBox).val();
var tableRows = $(textBox).parent().parent().children();
if (quantity != "") {
var price = tableRows[0].children[0].innerHTML;
var itemTotal = price * quantity;
tableRows[2].children[0].innerHTML = itemTotal;
}
else
tableRows[2].children[0].innerHTML = "";
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="Price">
<ItemTemplate>
<asp:Label ID="lblPrice" runat="server" Text='<%# Bind("Price")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Quantity">
<ItemTemplate>
<asp:TextBox ID="txtQuantity" CssClass="QuantityClass" runat="server" Text='<%# Bind("Quantity")%>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Item Total">
<ItemTemplate>
<asp:Label ID="lblItemTotal" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</form>
</body>
輸出:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.