Как связать gridview в текстовом поле и как рассчитать общее значение в asp.net

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

Я получаю сообщение об ошибке, когда хочу получить из Quantity текстовое поле и общее значение цены.

Я попытался использовать 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