2011-02-08 2 views
2

У меня есть DataTable с столбцом VatRate, извлеченным из столбца базы данных floatDataType. Теперь я хочу добавить вычисленный DataColumn в моем DataTable с VatRate, образованным до двух знаков после запятой и значком %, а затем пробелом.Выражение для добавления вычисленного столбца в DataTable с знаком процента

Таким образом, если значение в колонке VatRate равно 12.5, тогда значение в ComputedColumn должно быть 12.50 %.

Примечание:
Я хочу его на DisplayMember из Combobox

ответ

5

Вероятно, было бы проще просто привязать этот столбец к, например, DataGrid, а затем определите на сетке, чтобы этот конкретный столбец отображался с фиксированным форматом, например. ##0.00 %.

В целом: не пытайтесь «заставить» ваши данные выглядеть так, как должно, - попробуйте определить свойства отображения на пользовательском интерфейсе!

Данные - это всего лишь данные - не преследуйте их с помощью опций отображения - они относятся к пользовательскому интерфейсу, а не к вашим данным.

Обновление:

В ASP.NET, например, DropDownList имеет свойство, называемое DataTextFormatString, которое позволяет вам определять отдельный формат отображения ваших данных.

Класс Winforms ComboBox также имеет свойство FormatString, которое позволяет вам определить, как должны выглядеть данные.

Update # 2: вы используете Winforms - поэтому установите ваш FormatString на выпадающий список, чтобы:

this.comboBox1.FormatString = "#0.00 %"; 

, а затем заполнить ценности, как 0.0875, 0.125 и так далее - они будут отображаться как 8.75 % и 12.50 % соответственно.

+0

Я хочу, чтобы это было на DisplayMember of Combobox – IsmailS

+0

@ismail: winforms? asp.net? WPF? –

+0

winforms. Сожалею! добавлен тег winform. – IsmailS

3

Если форматирование не будет проблемой, вы могли бы использовать выражение как это:

myDataColumn.Expression="Convert(VatRate, 'System.String') + '%'" 

Но зачем вам нужны дополнительные столбцы? Не можете ли вы просто определить строку формата для привязки, используемой для отображения данных в вашем окне/окне/странице, или использовать ToString (...) при записи в каком-то потоке?

+0

Спасибо, 'vatRatesDataTable.Columns.Add (новый DataColumn (" VatRateWithPercent ", typeof (string)," Convert (VatRate, 'System.String') + '%' "));' работал. Но я хочу VatRate в двух десятичных знаках. Есть идеи??? – IsmailS

+0

Вы читали сообщения/комментарии о привязке и/или форматировании? Вы должны форматировать свои данные в презентации, а не хранить (даже если это только в памяти, например, с таблицей данных). Если вам все еще нужен формат в выражении столбца, вы можете использовать функции «Лен» и «Подстрока», чтобы получить правильную формулу, но вам понадобятся несколько экземпляров Convert (..., ...), и вы получите очень длинный выражение. Я думаю, что это не самый лучший способ, и вам нужно отформатировать свои данные только на этапе презентации. – BertuPG