开发者

how to find the total in gridview columns

I would like your help with my code. I wrote this source code

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ShowLand.aspx.cs" Inherits="ShowLand" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body MS_POSITIONING="GridLayout" bgColor="#FFF8DC" aLink="#330066">
    <form id="form1" runat="server">
 <asp:Label id="Label6" 
        style="Z-INDEX: 101; LEFT: 176px; POSITION: absolute; TOP: 8px; text-align: center;" runat="server"
                Font-Size="X-Large" Font-Italic="True" Font-Underline="True" Width="608px" ForeColor="Navy"
                Font-Bold="True">Land For Sale</asp:Label>
    <br />
    <br />
    <br />
<div>
        <asp:GridView ID="gridView1" runat="server" CellPadding="4" ForeColor="#333333" 
            GridLines="None">
            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:CheckBox ID="chkSelect" runat="server" />
                        <asp:HiddenField ID="hdValue" runat="server" Value='<%#Eval("ID") %>' />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            <EditRowStyle BackColor="#999999" />
            <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
            <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
            <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
            <SortedAscendingCellStyle BackColor="#E9E7E2" />
            <SortedAscendingHeaderStyle BackColor="#506C8C" />
            <SortedDescendingCellStyle BackColor="#FFFDF8" />
            <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
        </asp:GridView>
    </div>
    <div>
        <asp:Button ID="btnMove" runat="server" Text="Add To Cart" OnClick="btnMove_Click" />
    </div>
    <div>

        <asp:GridView ID="gridView2" runat="server" CellPadding="4" ForeColor="#333333" 
            GridLines="None">
            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        <Columns>
   开发者_如何转开发     <asp:TemplateField HeaderText="Qty">
            <ItemTemplate>
            <asp:TextBox ID="tbQty" runat="server" Width="25px"
            MaxLength="3" />
            </ItemTemplate>
            <ItemStyle Width="25px" HorizontalAlign="Center"/>
        </asp:TemplateField>
        </Columns>
            <EditRowStyle BackColor="#999999" />
            <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
            <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
            <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
            <SortedAscendingCellStyle BackColor="#E9E7E2" />
            <SortedAscendingHeaderStyle BackColor="#506C8C" />
            <SortedDescendingCellStyle BackColor="#FFFDF8" />
            <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
        </asp:GridView>
    </div>
    <br />
    <br />
    <br />
    </form>
</body>

</html>

and also i created these 2 gridviews like this in ShowLand.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

public partial class ShowLand : System.Web.UI.Page
{
    const string key = "MyDataSource3";
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindGridView();
        }

    }
    private void BindGridView()
    {
        if (Session[key] == null)
        {
            gridView1.DataSource = GetDataSource();
            gridView1.DataBind();
        }
        else
        {
            gridView1.DataSource = (DataTable)Session[key];
            gridView1.DataBind();
        }

    }
    protected DataTable GetDataSource()
    {
        try
        {
            DataTable dt = new DataTable();
            dt = new DataTable();
            dt.Columns.Add("ID", typeof(int)).AutoIncrement = true;
            dt.Columns.Add("Name", typeof(string));
            dt.Columns.Add("Price(Grouch)/Hectares", typeof(float));
            DataColumn[] keys = new DataColumn[2];
            keys[0] = dt.Columns["ID"];
            dt.PrimaryKey = keys;
            dt.Rows.Add("1", "Seaside Location", 1.5);
            dt.Rows.Add("2", "Arable Land", 0.1);
            dt.Rows.Add("3", "Foothills of the mountains", 1.5);
            dt.Rows.Add("4", "Industrial Land", 0.1);
            dt.Rows.Add("5", "Rolling Farmland", 0.5);
            Session[key] = dt;
            return dt;

        }
        catch
        {
            return null;
        }
    }
    protected void btnMove_Click(object sender, EventArgs e)
    {
        try
        {
            DataTable dtMain = Session[key] as DataTable;
            //copy the schema of source table
            DataTable dtClone = dtMain.Clone();
            foreach (GridViewRow gv in gridView1.Rows)
            {
                CheckBox chk = gv.FindControl("chkSelect") as CheckBox;
                HiddenField hdValue = gv.FindControl("hdValue") as HiddenField;
                if (chk.Checked)
                {
                    //get only the rows you want
                    DataRow[] results = dtMain.Select("ID=" + hdValue.Value + "");
                    //populate new destination table
                    foreach (DataRow dr in results)
                    {
                        dtClone.ImportRow(dr);
                    }
                }
                gridView2.DataSource = dtClone;
                gridView2.DataBind();
            }
        }
        catch
        {
            BindGridView();
        }

    }
}

In this code the user can chose with the checkbox his choice and with the button to add this choice in the second gridview.Also in the textbox can give the quantity. I would like to find a way how to multiply the quantity with the price column.How can i do that?


While you are looping through the gridview, you have access to the row and it's cells. So the value of your quantity and price from respective cells and do the calculation e.g. gv.Cells[2].Text

Check this: Calculate Price Total

By the way,I just saw your code again and don't see a Quantity column?


It will be best to calculate total from the DataTable from where you are binding that gridview like this

       datatable.Compute("Sum(ColumnName)","")

Because we doesn't need to use for loop here and so lot of time is saved here.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜