Свойство ячейки формата DataGrid

#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) и подключаете к нему сетку, чтобы отобразить ее. В качестве концепции это называется «модель, представление, контроллер» , и это помогает разделить проблемы в приложении. Если вы примените подход, заключающийся в хранении ваших данных в таблице данных, а не в размещении их непосредственно в сетке, многие вещи начнут иметь гораздо больше смысла! 😉