简体   繁体   English

如何在gridview asp.net C#中将两列相乘

[英]how to multiply two columns in gridview asp.net c#

i have gridview i which 4 columns i want to multiply rate to quantity to get total i do not how to do this kindly help me, please. 我有gridview i我想将比率乘以数量以获得总和的4列我不怎么做,请您帮我。 here is code 这是代码

<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>

code: 码:

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();

        }
    }

Add a template field to get total, no need to do calculations on RowDataBound 添加模板字段以获取总计,无需在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>

Replace Quantity and Price with the column what your are using, means from dataset or datatable 用您要使用的列替换“ QuantityPrice ”,即来自数据集或数据表的含义

Hope this will help you. 希望这会帮助你。

Below is an example using jQuery. 以下是使用jQuery的示例。 Have a look at the code below and understand how it works then make changes to your application 查看下面的代码,了解其工作原理,然后对应用程序进行更改

Code behind: 后面的代码:

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: .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>

Output: 输出:

计算两个GridView列的客户端

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM