2016-04-22 21 views
-3

私はカートプロジェクトに取り組んでおり、Visual Studio 2010をSQL Server Expressで使用しています。グリッドビューを使用して自分のカートテーブルのデータをデータベースに表示しています。私は自分のデータベースに商品テーブルを持っていて、商品テーブルからカートテーブルに商品を挿入します。その後、私はグリッドビューでカートを表示します。私が直面している問題は、私は注文の合計価格を表示するためにカートのアイテムの価格を追加するために私のgridviewから価格の列を使用することはできません。どうやってやるの?次のように 私のASP GridViewのソースコードがあるグリッドビューの列からデータをフェッチし、列に対して算術演算を実行する方法は?

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        CellPadding="4" CssClass="table table-condensed" DataSourceID="SqlDataSource1" 
        ForeColor="#333333" GridLines="None" 
        onselectedindexchanged="GridView1_SelectedIndexChanged" 
        DataKeyNames="serial_no" onrowdatabound="GridView1_RowDataBound"> 
        <AlternatingRowStyle BackColor="White" /> 
        <Columns> 
         <asp:TemplateField HeaderText="serial_no" InsertVisible="False" 
          SortExpression="serial_no"> 
          <EditItemTemplate> 
           <asp:Label ID="Label1" runat="server" Text='<%# Eval("serial_no") %>'></asp:Label> 
          </EditItemTemplate> 
          <ItemTemplate> 
           <asp:Label ID="Label1" runat="server" Text='<%# Bind("serial_no") %>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:BoundField DataField="Name" HeaderText="Name" 
          SortExpression="Name" ControlStyle-CssClass="cart_menu" > 
         </asp:BoundField> 
         <asp:BoundField DataField="Quantity" HeaderText="Quantity" 
          SortExpression="Quantity" /> 
          <asp:BoundField DataField="Price" HeaderText="Price" 
          SortExpression="Price" /> 
         <asp:TemplateField HeaderText="Delete" SortExpression="serial_no"> 
          <EditItemTemplate> 
           <asp:Label ID="Label2" runat="server" Text='<%# Eval("serial_no") %>'></asp:Label> 
          </EditItemTemplate> 
          <ItemTemplate> 
           <asp:Button ID="Button1" runat="server" CommandName="Delete" 
            onclick="Button1_Click1" Text="Button" /> 
          </ItemTemplate> 
         </asp:TemplateField> 
        </Columns> 


        <FooterStyle BackColor="#FF7800" Font-Bold="True" ForeColor="White" CssClass="cart_menu" /> 
        <HeaderStyle BackColor="#FF7800" Font-Bold="True" ForeColor="White" CssClass="cart_menu" /> 
        <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" /> 
        <RowStyle BackColor="#FFFFFF" ForeColor="#333333" /> 
        <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" /> 
        <SortedAscendingCellStyle BackColor="#FDF5AC" /> 
        <SortedAscendingHeaderStyle BackColor="#4D0000" /> 
        <SortedDescendingCellStyle BackColor="#FCF6C0" /> 
        <SortedDescendingHeaderStyle BackColor="#820000" /> 
       </asp:GridView> 

私のSqlDataSource

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:cs %>" 
        ProviderName="<%$ ConnectionStrings:cs.ProviderName %>" 

        SelectCommand="SELECT cartdemo.serial_no, Product.Name, Product.P_Image, Product.Price, cartdemo.Quantity FROM cartdemo INNER JOIN Product ON cartdemo.ProductID = Product.ProductID WHERE (cartdemo.CID = @cid)" 
        DeleteCommand="DELETE FROM cartdemo WHERE (serial_no = @sl_no)"> 
        <DeleteParameters> 
         <asp:Parameter Name="sl_no" /> 
        </DeleteParameters> 
        <SelectParameters> 
         <asp:SessionParameter Name="cid" SessionField="ssid" /> 
        </SelectParameters> 
       </asp:SqlDataSource> 

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

public partial class cart2 : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
    { 

    } 
    protected void Button1_Click(object sender, EventArgs e) 
    { 


    } 
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     GridViewRow grd = e.Row; 
     switch (grd.RowType) 
     { 
      case DataControlRowType.DataRow: 
       { 
        Button btn = (Button)grd.FindControl("Button1"); 
        if (btn != null) 
        { 
         Label lbl_pid = (Label)grd.FindControl("Label1"); 
         btn.CommandArgument = lbl_pid.Text; 
        } 
        break; 
       } 
     } 

     calTotal(4); 

    } 
    protected void Button1_Click1(object sender, EventArgs e) 
    { 
     Button btn = sender as Button; 
     string id = btn.CommandArgument; 
     SqlDataSource1.DeleteParameters[0].DefaultValue = id; 
     SqlDataSource1.Delete(); 
     GridView1.DataBind(); 

    } 
    public void calTotal(int curCol) 
    { 
     decimal valueColumn = 0; 
     //try 
     //{ 
     foreach (GridViewRow row in GridView1.Rows) 
     { 
      valueColumn = valueColumn + Convert.ToDecimal(row.Cells[curCol].Text); 
     } 
     //} 
     //catch(Exception r) 
     //{ 
     //} 

     Label3.Text = "Rs." + valueColumn.ToString(); 
    } 
} 
+0

ようこそ。何イムは、実際に ます。public void calTotal(int型curCol) { 小数点valueColumn = 0このコードを使用しようとしない – ughai

答えて

0

私が正しくあなたの質問を理解していた場合は、何を知っている欠けているの背後にある私のC#のコードaboutはSQL関数 "SUM"です。合計hereの詳細については、こちらをご覧ください。短いバージョンでは、SUMはNUMERICデータの列の合計を返します。基本的な構文は次のようになります。

SELECT SUM(myColumn) 
FROM myTable; 
/* Assume myColumn contains {0, 1, 2, 3, 4, 5} */ 
/* The output of this SELECT statement would be {15} */ 
+0

(http://stackoverflow.com/help/how-to-ask)[依頼方法】お読みください。 // // { foreachの(GridView1.RowsでGridViewRow行) {valueColumn = valueColumn + Convert.ToDecimal(row.Cells [curCol]の.text)を試みます。 } //} //キャッチ(例外R) // {//} Label3.Text = "RS"。 + valueColumn.ToString(); } –

+0

私はグリッドビューの列からデータをフェッチし、ラベルに格納したいと考えています。 –

+0

私は自分のコードを実行するとformatexceptionエラーがスローされます –

関連する問題