如何在文本框中绑定gridview以及如何计算asp.net中的总值

时间:2014-07-18 17:17:50

标签: c# mysql asp.net gridview shopping-cart

我目前正在开发一个购物车项目。从数据库中检索后,我的程序将显示网格视图。

当我想从带有文本框的数量和价格的总价值中检索时,我遇到了错误。

我尝试使用eval但是有一个错误说明服务器标签格式不正确。

任何人都可以帮助我?

先谢谢了。

<asp:GridView ID="gv_Cart" runat="server" EmptyDataText="There is nothing in your shopping cart." CssClass="table table-striped table-bordered" ShowFooter="True" GridLines="Vertical" CellPadding="4" AutoGenerateColumns="False" >
            <Columns>
                <asp:BoundField  HeaderText="ID" DataField="productID" />  
                <asp:BoundField  HeaderText="Name" DataField="productName" /> 
                <asp:BoundField  HeaderText="Model" DataField="Model" />
                <asp:BoundField  HeaderText="Price (each)" DataFormatString="{0:c}" DataField="Price"/> 
                <asp:TemplateField HeaderText="Quantity">            
                <ItemTemplate>
                    <asp:TextBox ID="PurchaseQuantity" Width="40" runat="server" Text="<%# Eval("Quantity") %>"></asp:TextBox> 
                </ItemTemplate>        
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Item Total">            
                    <ItemTemplate>
                      <% String.Format("{0:c}", ((Convert.ToInt16(<%# Eval("Quantity") %>) * Convert.ToInt16(<%# Eval("price") %>) ))  %>
                    </ItemTemplate>        
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Remove Item">            
                    <ItemTemplate>
                        <asp:CheckBox id="Remove" runat="server"></asp:CheckBox>
                    </ItemTemplate>        
                </asp:TemplateField>        
            </Columns>
        </asp:GridView>

这里有代码:

        protected void Page_Load(object sender, EventArgs e)
        {
        string a = Session["customer_Username"].ToString();

        List<cart> allCart = new List<cart>();

        allCart = cBLL.getUsername(a);

        gv_Cart.DataSource = allCart;
        gv_Cart.DataBind();
        }

3 个答案:

答案 0 :(得分:1)

标签确实没有很好地形成。这是一个更好的版本:

<%# String.Format("{0:c}", Convert.ToInt16(Eval("Quantity")) * Convert.ToInt16(Eval("price")) %>

请注意,它仅使用<% %>的部分,此处没有内部服务器标记。这些标签不应该嵌套。

更新。至于数量字段,您只需更正报价即可。使用单引号作为属性值,使用双引号作为Eval:

Text='<%# Eval("Quantity") %>'

答案 1 :(得分:1)

我不是100%肯定你在说错误的地方..但这看起来不对..

<asp:TemplateField HeaderText="Item Total">            
        <ItemTemplate>
            <% String.Format("{0:c}", ((Convert.ToInt16(<%# Eval("Quantity") %>) * Convert.ToInt16(<%# Eval("price") %>) ))  %>
        </ItemTemplate>        
 </asp:TemplateField>

应该像我想象的那样......

<asp:TemplateField HeaderText="Item Total">            
        <ItemTemplate>
            <asp:Label id="lblOne" runant="server" text="<% String.Format("{0:c}", ((Convert.ToInt16(<%# Eval("Quantity") %>) * Convert.ToInt16(<%# Eval("price") %>) ))  %>"></asp:Label>
        </ItemTemplate>        
 </asp:TemplateField>

答案 2 :(得分:1)

尝试以下代码

  <asp:TemplateField HeaderText="Item Total">            
    <ItemTemplate>
          <%# String.Format("{0:c}", Convert.ToInt16(Eval("Quantity")) * Convert.ToInt16(Eval("price")) %>
   </ItemTemplate>        
  </asp:TemplateField>