2016-04-14 5 views
0

У меня есть два элемента TEMplate в Gridview, необходимо выполнить операцию умножения и сохранить его в другом столбце. Как бы это сделать? умножьте productPrice и productQuantity и сохраните на этикетке totalPrice. СпасибоРасчет в Gridview Itemtemplate?

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:AutopartConnectionString %>" 
    SelectCommand="SELECT [id], [productID], [productName], [productPrice], [productQuantity], [totalPrice] FROM [cartDetails]" 
    UpdateCommand="UPDATE [cartDetails] SET [productQuantity][email protected] WHERE [productID][email protected]" 
    DeleteCommand="DELETE [cartDetails] WHERE [productID][email protected]"> 
     <%--<UpdateParameters> 
      <asp:Parameter Name="productQuantity" Type="Int32" /> 
      <asp:Parameter Name="productQuantity" Type="String" /> 
     </UpdateParameters>--%> 
     <DeleteParameters> 
      <asp:Parameter Name="productID" Type="Int32" /> 
     </DeleteParameters> 
    </asp:SqlDataSource> 
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id" DataSourceID="SqlDataSource1"> 
     <Columns> 
      <asp:TemplateField HeaderText="id" InsertVisible="False" SortExpression="id" Visible="False"> 
       <EditItemTemplate> 
        <asp:Label ID="Label1" runat="server" Text='<%# Eval("id") %>'></asp:Label> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label1" runat="server" Text='<%# Eval("id") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="productID" SortExpression="productID" > 

       <ItemTemplate> 
        <asp:Label ID="Label2" runat="server" Text='<%# Eval("productID") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="productName" SortExpression="productName"> 

       <ItemTemplate> 
        <asp:Label ID="Label3" runat="server" Text='<%# Eval("productName") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="productPrice" SortExpression="productPrice"> 
       <ItemTemplate> 
        <asp:Label ID="Label4" runat="server" Text='<%# Eval("productPrice") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="productQuantity" SortExpression="productQuantity"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox4" runat="server" Text='<%# Eval("productQuantity") %>'></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label5" runat="server" Text='<%# Eval("productQuantity") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:CommandField ShowEditButton="True" /> 
      <asp:TemplateField HeaderText="totalPrice" SortExpression="totalPrice"> 

       <ItemTemplate> 
        <asp:Label ID="Label6" runat="server" Text='<%# ((Convert.ToDecimal(Eval("productPrice")))*(Convert.ToDecimal(Eval("productQuantity")))).ToString() %>'></asp:Label> 
        <%-- <asp:Label ID="Label6" runat="server" Text='<%# Bind("totalPrice") %>'></asp:Label>--%> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:CommandField ShowDeleteButton="True" /> 
     </Columns> 
    </asp:GridView> 

Моей таблица структура

Create table cartDetails(
id int not null identity(1,1) primary key, 
productID int not null, 
productName VARCHAR(150) not null , 
productPrice float, 
productQuantity int, 
totalPrice float 
); 
+1

Что происходит, когда вы запускаете свой код? Вы видите что-то в «totalPrice»? – ConnorsFan

+0

@ConnorsFan Я получаю это сообщение об ошибке компилятора: CS0103: имя «Bind» не существует в текущем контексте. – adarshjaya12

+1

ОК. Таким образом, даже без столбца расчета у вас должны быть некоторые проблемы. Вы можете заменить 'Bind' на' Eval' во всех столбцах. – ConnorsFan

ответ

0

Есть ли какая-либо причина не делать математику в Select? или вы даже можете сделать totalPrice вычисленным полем в дизайнере таблиц.

SELECT [id] 
    , [productID] 
    , [productName] 
    , [productPrice] 
    , [productQuantity] 
    , [productPrice] * [productQuantity] as [totalPrice] 
    FROM [cartDetails] 

, а затем просто связать totalPrice

<ItemTemplate> 
    <asp:Label ID="Label6" runat="server" Text='<%# Bind("totalPrice") %>'</asp:Label> 
</ItemTemplate> 

Кроме того, в отношении математики в пределах ItemTemplate; вы должны использовать Eval(), и вы должны убедиться, что нет нулевых значений. Разумное использование isnull(<field>,0) в заявлении SELECT при необходимости.