2014-03-27 4 views
0

У меня есть DataGridView с AutoGenerateColumns = true.
я заполнить данные из CSV (поэтому они все строки, не десятичные)Валюта формата DataGridView с динамическими строковыми данными

DataTable dt = CsvToDataTable(masterlistCsvPath); // My function, returns a DataTable 
//dt.Columns['Price'].DataType = Type.GetType("System.Decimal"); // Exception: Cannot change DataType of a column once it has data. 
dgvMasterList.DataSource = dt; 

Как отформатировать Цены колонок в качестве валюты?
например. «38,5» → «$ 38,50» или «38,50»

Это не работает (он ничего не делает):

dgvMasterList.Columns["Price"].ValueType = Type.GetType("System.Decimal"); 
dgvMasterList.Columns["Price"].DefaultCellStyle.Format = "C"; 

Это работает (только доказать, что я звоню правильно)

dgvMasterList.Columns["Price"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; 

Другой вопрос: вопрос:
Как вы добавляете символ процента в столбец?
например. "5" → "5%"

ответ

0

Вы не можете форматировать строковое значение в формате валюты. Но вы можете загрузить схему из csv в datatable и изменить тип данных каждого поля, как вы хотите, и передать его в свой datagridviewcontrol как источник данных. Теперь вы можете присвоить валютный формат своему столбцу цены как «C».

+0

Thanks Nimesh. Я добавил 'dt.Columns ['Price']. DataType = Type.GetType (« System.Decimal ») ;, но он говорит:« Невозможно изменить тип данных столбца, если у него есть данные. * – Aximili

+0

[This] (http: /stackoverflow.com/questions/9028029/how-to-change-datatype-of-a-datacolumn-in-a-datatable) заключается в том, как изменить DataType столбцов DataTable – Aximili

Смежные вопросы