#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
соответствуют вашей структуре данных.