#vb.net #datagrid
#vb.net #datagrid
Вопрос:
Моя datagrid не форматирует входное значение.
Если я ввожу «5», он возвращает «5», а не «5,00%»
Я попытался изменить формат cellstyle ячейки в редакторе на «0,00%» или на «P», но он не форматируется… Уже пробовал «000» или «0,00», и ничего не происходит… Он всегда возвращает «5»
Комментарии:
1. Может быть, соответствующий тип данных столбца
string
вместоfloat
илиdouble
или …? Вы всегда можете использоватьCellFormatting
событие, но, вероятно, лучше установить правильный тип данных.
Ответ №1:
Если вас это утешит, я не смог воспроизвести вашу жалобу:
Я все настроил в коде, но только потому, что это упрощает вставку в SO. Вставьте это в форму и поиграйте с ней:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dt As New DataTable
dt.Columns.Add("Thing", GetType(Double))
dt.Rows.Add(1.234)
dt.Rows.Add(2.345)
Dim dg As New DataGridView
dg.DataSource = dt
Me.Controls.Add(dg) 'so that columns are autogenerated
dg.Columns(0).DefaultCellStyle.Format = "0.00%"
End Sub
Вы можете сделать то же самое в конструкторе; не обязательно должен быть код
- Добавьте новый набор данных в свой проект, добавьте к нему DataTable со столбцом с поддержкой десятичных чисел (выберите лучшие имена, чем у меня здесь):
- Откройте панель источники данных (меню вид, другие окна), перетащите таблицу данных в форму, чтобы создать таблицу, отредактируйте столбцы таблицы, чтобы задать формат:
-
и поместите некоторые данные в базовую таблицу:
Частная подформа Form1_Load(отправитель как объект, e как EventArgs) обрабатывает MyBase.Загрузите меня.DataSet1.DataTable1.Добавьте datatatable1row(1.234) Me.DataSet1.DataTable1.AddDataTable1Row(2.345) End Sub
Комментарии:
1. Понял… Я решил эту проблему с помощью события «CellValueChanged»… Как вы мне показали, мне нужно создать набор данных… С помощью datagrid я не могу изменить тип данных столбца… В любом случае спасибо… Просмотрено
2. Я не могу изменить тип данных столбца да, это потому, что datagridviews на самом деле не должны содержать данные.. Вы храните свои данные в чем-то другом (в datatable) и подключаете к нему сетку, чтобы отобразить ее. В качестве концепции это называется «модель, представление, контроллер» , и это помогает разделить проблемы в приложении. Если вы примените подход, заключающийся в хранении ваших данных в таблице данных, а не в размещении их непосредственно в сетке, многие вещи начнут иметь гораздо больше смысла! 😉