ASP.NET : Как объявить вычисляемое поле в aspx-файле, если это возможно?

#asp.net #datagridview #declaration #calculated-field

#asp.net #datagridview #объявление #вычисляемое поле

Вопрос:

У меня есть GridView с 2 BoundFields, подобными этому:

 <asp:BoundField DataField="UnitPrice" HeaderText="Unit Price">
        </asp:BoundField>

<asp:BoundField DataField="Quantity" HeaderText="Quantity">
        </asp:BoundField>
  

Как мне добавить поле «Итого», которое вычисляется путем декларативного умножения двух других полей в GridView? Эти 2 существующих поля взяты из базы данных SQL, и я не могу добавить новые поля в эту базу данных. В некотором смысле, я должен создавать поле Total динамически.

Если это невозможно, как это сделать программно? Спасибо.

Ответ №1:

Самым простым способом было бы добавить свойство к базовому классу:

 Decimal Total { get { return UnitPrice*Quantity; } }
  

Затем вы можете сослаться на поле Total в BoundField

Если изменение базового класса не является вариантом, попробуйте это:

 <asp:TemplateField>
   <ItemTemplate>
      <asp:Label runat="server" Text='<%# String.Format("{0:c}", ((Decimal)Eval("UnitPrice"))*((int)Eval("Quantity"))) %>' />
   </ItemTemplate>
</asp:TemplateField>
  

Обратите внимание, что вы захотите убедиться, что приведения для каждого из них Eval соответствуют вашей структуре данных.