2016-04-22 2 views
-3

Ich arbeite an einem Cart-Projekt und Visual Studio 2010 mit SQL Server Express verwenden. Ich verwende eine Gridview, um Daten aus meiner Warenkorb-Tabelle in meiner Datenbank anzuzeigen. Ich habe eine Produkttabelle in meiner Datenbank und füge Produkte aus der Produkttabelle in die Warenkorbtabelle ein. Danach zeige ich den Warenkorb in der Gridview an. Das Problem, mit dem ich konfrontiert bin, ist, dass ich die Price-Spalte aus meiner Gridview nicht verwenden kann, um die Preise der Artikel im Einkaufswagen hinzuzufügen, um den Gesamtpreis der Bestellung anzuzeigen. wie kann ich das machen? mein asp gridview Quellcode ist wie folgtWie hole ich Daten aus einer Spalte einer Gridview und führe arithmetische Operationen für die Spalte aus?

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

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

mein C# -Code hinter

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

Willkommen bei SO. Bitte lesen Sie [Wie fragen] (http://stackoverflow.com/help/how-to-ask) – ughai

Antwort

0

Wenn ich Ihre Frage richtig bin zu verstehen, was Sie wollen wissen, etwa ist die SQL-Funktion "SUM". Sie können weitere Informationen über die Summe here finden. Die kurze Version ist, dass SUM die Summe für eine Spalte mit NUMERIC-Daten zurückgibt. Die grundlegende Syntax sieht in etwa so aus:

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

nicht im tatsächlich versuchen, diesen Code zu verwenden public void calTotal (int curCol) { dezimal Valuecolumn = 0; // probier // { foreach (GridViewRow-Zeile in GridView1.Rows) { ValueColumn = ValueColumn + Convert.ToDecimal (row.Cells [curCol] .Text); } } // // catch (Exception r) // { } // Label3.Text = "Rs". + valueColumn.ToString(); } –

+0

Ich möchte Daten aus einer Spalte der Gridview abrufen und in einem Label speichern. –

+0

Wenn ich meinen Code ausführen, gibt es einen Formatatexception Fehler geworfen –

Verwandte Themen