Nano Hash - криптовалюты, майнинг, программирование

DataGridView — DataTable — отображение свойств

(.NET 2.0, System.Windows.FormsDataGridView и DataTable)

У меня есть 1 datagrid, подключенный к 1 datatable.

Эта таблица данных содержит 1 столбец: содержащий объекты моего собственного типа "MyObject".
MyObject имеет общедоступное строковое свойство "MyProp".

Я хочу отобразить 1 столбец в сетке: показать строковые значения свойства MyProp объектов MyObjects в таблице.

Но я не могу заставить его работать.

Схематично:

  • myTable.Column1.Name: "Объект"
  • myDataSet содержит 1 таблицу: myTable (заполненная несколькими строками)
  • myBindingSource.datasource = мой набор данных
  • myBindingSource.DataMember = моя таблица
  • myDataGridView.DataSource = мой источник привязки
  • в myDataGridView: 1 DataGridViewTextBoxColumn

  • проба 1:

Column.DataPropertyName="Объект" (создается по умолчанию)

Отображает результат (переопределенного) MyObject.ToString() Не совсем то, что мне нужно, эта функция используется для ведения журнала.

  • проба 2:

GridViewColumn.DataPropertyName="Объект.MyProp"

Ничего не отображает (get MyProp никогда не вызывается)

  • Проба 3: Сделано свойство MyProp привязываемым:

    [Bindable (BindableSupport.Yes)]
    public string MyProp
    { ...
    

    То же самое, не отличается от пробного варианта 2

Вкратце:

GridViewColumn.DataPropertyName, похоже, не поддерживает детализацию глубже в объекты в столбце таблицы данных.

У кого-нибудь есть идеи?

Заранее спасибо!

Ян


  • Почему вы выбрали datagridview? Должен ли быть задействован пейджинг? 28.01.2009
  • Поскольку это компонент сетки по умолчанию, DataGrid отсутствует в наборе инструментов. 28.01.2009

Ответы:


1

Попробуйте просто поместить строковое значение Obj.MyProp в строку данных. Помещение объекта туда потребует его преобразования в строковое представление (Obj.ToString()), которое дает вам результат, который вы видите.

Datatable очень похож на электронную таблицу, а не на массив (объектов). Вы должны относиться к этому как к таковому.

28.01.2009

2

Вы можете привязываться только к непосредственным свойствам источника данных. Для DataTable это означает столбцы. На ум приходят два варианта:

  • не используйте DataTable - просто используйте List<MyObject> или BindingList<MyObject>
  • (или) переопределить MyObject.ToString(), чтобы вернуть MyProp

Второй не очень гибкий - я бы пошел с первым. В конце концов, что на самом деле делает для вас одноколоночный DataTable?

28.01.2009
  • я пытался использовать list‹myObject›, но я запутался в применении его к вложенному классу... для одного уровня класса он отлично работает 15.06.2010

  • 3

    Это можно сделать с помощью события OnRowDataBound.

    В сетке

    1. объявить метод onrowdatabound

    2. использовать шаблон

    В методе:

    1. схватить объект

    2. заполнять или управлять отображением по желанию

    Вы также можете делать то, что хотите, используя шаблоны вместо макета по умолчанию.

    28.01.2009
  • Я думаю, что он имеет в виду DataGridView, а не веб-DataGrid. Если память не изменяет, в DGV нет события OnRowDataBound. 28.01.2009
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..