我目前正在开发一个购物车项目。从数据库中检索后,我的程序将显示网格视图。
当我想从带有文本框的数量和价格的总价值中检索时,我遇到了错误。
我尝试使用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();
}
答案 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>