Как да обвържете gridview в текстово поле и как да изчислите общата стойност в asp.net

В момента работя върху проект за пазарска количка. Програмата ми ще покаже мрежов изглед, след като изтегля от базата данни.

Получавам грешка, когато искам да извлека от Количество с текстово поле и обща стойност на цената.

Опитах се да използвам 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();
        }

person Samuel    schedule 18.07.2014    source източник


Отговори (3)


Не съм 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>
person Humpy    schedule 18.07.2014

Опитайте кода по-долу

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

Етикетът наистина не беше добре оформен. Ето по-добра версия:

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

Обърнете внимание, че използва само раздел от <% %>, тук няма вътрешни тагове на сървъра. Тези етикети не трябва да бъдат вложени.

Актуализиране. Що се отнася до полето за количество, трябва само да коригирате офертите си. Използвайте единични кавички за стойност на атрибут и двойни кавички за Eval:

Text='<%# Eval("Quantity") %>'
person Andrei    schedule 18.07.2014
comment
Здравейте, благодаря за помощта, но също така срещнах грешка в количеството за покупка, че етикетът не е добре оформен. Някакви решения? - person Samuel; 19.07.2014