himanil Ответов: 1

Как динамически извлекать данные из набора данных в соответствии с именем столбца


Я нахожусь на программном обеспечении, где мне нужно отображать данные на этикетках.
Я использую представление Datagrid, которое загружает файл Excel с помощью набора данных и, используя тот же набор данных, который уже заполнен данными, можно ввести имя столбца в текстовые поля, для которых пользователю необходимо отображать данные на метках.
Все работает нормально,но когда текстовое поле пусто, код выдает ошибку.
Я также хочу эту функциональность, чтобы, если пользователь хочет отображать подобную информацию только из трех столбцов, он мог это сделать. Мне нужно реализовать то же самое для 15 меток, чтобы, если кому-то нужно показать информацию только из 5 или 10 меток, он ввел соответствующее имя столбца в текстовые поля и оставил остальные пустыми. Я не могу найти никакого решения для этого.

Что я уже пробовал:

Для лучшего понимания ниже приведена часть кода и два способа поиска данных из набора данных путем ввода имени столбца во время выполнения или по предопределенным типизированным именам столбцов в коде. Я хочу реализовать прежний подход Runtime в своем проекте.

этикетка 1.Текст = бс1.Таблицы[0].Строки[я][@текстовое поле textbox1.Текст.Метод toString()].Метод toString();

этикетка 1.Текст = бс1.Таблицы[0].Строки[я]["Columnname1"].Метод toString();

1 Ответов

Рейтинг:
1

Richard MacCutchan

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

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

В-третьих, не используйте имена переменных по умолчанию, такие как ds1, textBox1 и т. д. Используйте собственные значимые имена, чтобы вы и другие знали, в чем их цель.


himanil

привет, спасибо за ответ, на самом деле мне нужно реализовать следующие вещи:
1. Пользователь может загрузить любой файл Excel, из которого он действительно хотите добавить данные в поля, как ярлыки.
2. В Excel будут добавлены в набор данных и набор данных будет загружен в элементе управления datagridview. Чтобы он мог видеть свой файл Excel.
3. затем пользователь может ввести имена столбцов в текстовые поля, из которых ему нужна информация для добавления в форму, это облегчит добавление конкретной информации столбцов не во все столбцы, потому что в одном листе Excel он может иметь 5 полезных столбцов, а в другом Excel он может иметь только 10 полезных столбцов.
4. Какое бы имя столбца он ни набрал в текстовых полях, значение ячеек будет добавлено к соответствующим меткам в форме. Таким образом, это позволит вам выбрать, какие столбцы данных вы хотите отобразить, и облегчить пользователю более дружественный способ.

Я успешно реализовал этот процесс до шага 2, но на следующем шаге, если я попытаюсь определить код только для 15 меток. Итак, что я сделал, я написал приведенный выше код 15 раз, изменив только идентификаторы меток и текстовых полей, чтобы сопоставить максимум 15 меток с 15 столбцами на 15 текстовых полей.
Но проблема, с которой я сталкиваюсь, заключается в том, что если я как пользователь в это время оставляю любое текстовое поле пустым, что означает, что я мог бы выбрать 9 столбцов, то C# выдает ошибку типа "' не найден в наборе данных.
Я выясняю, как это решить.

Надеюсь, это прояснит мою ситуацию и поможет вам или другим людям найти решение этой проблемы, и я знаю, что пользователи Codeproject могут кодировать что угодно.

Спасибо и теплые пожелания

Richard MacCutchan

Мой первый вопрос: почему вы все так усложняете? Пусть пользователь имеет Excel и делает это сам.

Однако, если вы твердо решили сделать это таким образом, то я думаю, что вам нужно пересмотреть свой дизайн. Создание 15 меток, когда пользователь может использовать только 9, просто неправильно. И почему вы заставляете пользователя вводить имена столбцов, когда он может просто выбрать конкретные столбцы в DataGridView? ...