Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
4 / 4 / 0
Регистрация: 17.01.2020
Сообщений: 199

Вывести часть данных из текстового файла в DataGridView, и при выборе записи - заполнять текстовые поля

13.01.2022, 17:23. Показов 545. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня!

Имеем текстовый файл формата:
702-Иванов И.И. Механик 13.01.22 Саратов
704-Петров А.В. Механик 12.12.21 Калининград
901-Сидоров Г.Н. Слесарь 01.11.19 Москва
888-Петрова П.А. Бухгалтер 10.04.19 Москва

На форме имеем DatagridView и 3 текстовых поля.
В DataGridView выводим номер и ФИО
Иванов И.И.
Петров А.В.
Сидоров Г.Н.
Петрова П.А.

И при выборе ФИО в DGV заполняем текстовые поля оставшимися значениями.
например, выбираем запись:
901-Сидоров Г.Н
и в текстовые поля заносим:
TextBox1.Text = Слесарь
TextBox2.Text = 01.11.19
TextBox3.Text = Москва

Подскажите, как это реализовать?
Данных гораздо больше. Привел кусок файла для примера
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.01.2022, 17:23
Ответы с готовыми решениями:

Вывести данные из текстового файла в combobox и при выборе записи в label
Доброго времени суток, уважаемые знатоки vb.net. Есть текстовый файл 1.txt вида: Сетевые подключения: ncpa.cpl Свойства системы:...

При выборе записи в таблице заполнять editы
имеется на форме edit для занесения данных в таблицу. как сделать так чтоб при выборе записи в таблице строчки в editax заполнились

Необходимо автоматом заполнять поля скрипта из текстового файла и вызывать этот скрипт
Ситуация проста до безобразия. Есть ASP скрипт на удленом сервере. Необходимо как-то автоматом заполнять поля скрипта из текстового файла и...

3
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
13.01.2022, 20:01
KwaZZi, Файл вы сами создавали или откуда-то извне такой уже пришел?

Цитата Сообщение от KwaZZi Посмотреть сообщение
Данных гораздо больше
Если данных не ОЧЕНЬ много и номер будет уникальным, то можно рассмотреть такой вариант
Создаём класс
Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
7
Public Class UsersInfo
    Public Property No As UInteger
    Public Property FIO As String
    Public Property Post As String
    Public Property DT As Date
    Public Property City As String
End Class

Создаём лист
VB.NET
1
 Dim AllUsersList As New List(Of UsersInfo)
Добавляем функцию
Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
Function ParseString(ByVal STR As String) As UsersInfo
        Dim Result As New UsersInfo
        Dim TMP() As String = Split(STR, "-")
        Dim No As UInteger = CUInt(TMP(0))
        Result.No = No
        Dim TMP2() As String = Split(TMP(1), " ")
        Result.FIO = TMP2(0) & " " & TMP2(1)
        Result.Post = TMP2(2)
        Result.DT = CDate(TMP2(3))
        Result.City = TMP2(4)
        Return Result
    End Function

Допустим данные лежат в Data.txt, что рядом с exe. Заполняем лист и DGW
Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
7
   Dim source() As String = IO.File.ReadAllLines("Data.txt", System.Text.Encoding.UTF8)
        For i = 0 To source.Count - 1
            If source(i).Length < 10 Then Continue For
            Dim Info As UsersInfo = ParseString(source(i))
            AllUsersList.Add(Info)
            DataGridView1.Rows.Add({Info.No, Info.FIO})
        Next

Ну и обработчик кликов
Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
7
   Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
         If e.RowIndex >= 0 Then
            TextBox1.Text = AllUsersList(e.RowIndex).Post
            TextBox2.Text = AllUsersList(e.RowIndex).DT
            TextBox3.Text = AllUsersList(e.RowIndex).City
        End If
    End Sub

Это при условии, что столбцы не будут сортироваться. Если же будут, то необходимо переделать немного обработчик.
Добавляем функцию
Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
 Function FindInfo(ByVal No As UInteger) As UsersInfo
        For i = 0 To AllUsersList.Count - 1
            If AllUsersList(i).No = No Then Return AllUsersList(i)
        Next
        Return Nothing
    End Function

И меняем обработчик клика
Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
7
8
9
10
Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
        If e.RowIndex >= 0 Then
            Dim Info As UsersInfo = FindInfo(CUInt(DataGridView1.Rows(e.RowIndex).Cells(0).Value))
            If IsNothing(Info) = False Then
                TextBox1.Text = Info.Post
                TextBox2.Text = Info.DT
                TextBox3.Text = Info.City
            End If
        End If
    End Sub
1
2282 / 1598 / 400
Регистрация: 26.06.2017
Сообщений: 4,731
Записей в блоге: 1
13.01.2022, 23:38
Не плохое решение, Orlangur
Но я бы сделал привязку текстбоксов к соответствующим свойствам класса UsersInfo через DataBindings, тогда последовательность столбцов и сортировка в DataGridView1 не будет иметь никакого значения. Проще всего для реализации этого применить BindingList.

Добавлено через 32 минуты
Пример вышесказанного.
Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Public Class Form1
 
    Dim AllUsersList As New System.ComponentModel.BindingList(Of UsersInfo)
 
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        TextBox1.DataBindings.Add("Text", AllUsersList, "Post")
        TextBox2.DataBindings.Add("Text", AllUsersList, "DT")
        TextBox3.DataBindings.Add("Text", AllUsersList, "City")
    End Sub
 
    Private Sub LoadButton_Click(sender As System.Object, e As System.EventArgs) Handles LoadButton.Click
        Dim source() As String = IO.File.ReadAllLines("Data.txt", System.Text.Encoding.Default)
        For i = 0 To source.Count - 1
            If source(i).Length < 10 Then Continue For
            Dim Info As UsersInfo = ParseString(source(i))
            AllUsersList.Add(Info)
        Next
        DataGridView1.DataSource = AllUsersList
    End Sub
 
    Function ParseString(ByVal STR As String) As UsersInfo
        Dim Result As New UsersInfo
        Dim TMP() As String = Split(STR, "-")
        Dim No As UInteger = CUInt(TMP(0))
        Result.No = No
        Dim TMP2() As String = Split(TMP(1), " ")
        Result.FIO = TMP2(0) & " " & TMP2(1)
        Result.Post = TMP2(2)
        Result.DT = CDate(TMP2(3))
        Result.City = TMP2(4)
        Return Result
    End Function
 
End Class
2
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
14.01.2022, 00:30
Uswer, Интересная штука, до этого с BindingList дел не имел, буду смотреть, спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.01.2022, 00:30
Помогаю со студенческими работами здесь

Обновление текстового поля при выборе значения из списка
Добрый день, Друзья, помогите пожалуйста с небольшой проблемкой. Аксессом плотно занимался более 8 лет назад, и, к сожалению, малость...

Неактивность текстового поля при выборе одного из значений
Всем привет! Новичок в JavaScript. Помогите с появившейся проблемой. Есть селектор значений и его значения: &lt;select...

Можно ли заполнять часть таблиц из базы данных, а часть из программы?
Здравствуйте! У меня есть база данных, в которой есть таблицы Клиенты, Заявки, Статусы заявок и другие. Для работы с этой базой данных есть...

Вывести связанные записи из второй таблицы при выборе записи в первой
Есть две таблицы, в одной пишется имя и фамилия, а в другой телефоны и их может быть несколько, например строка - 1 первый телефон, строка...

Размеры многострочного текстового поля определяются значениями, введенными в однострочные текстовые поля
напишите программу по описанию. Размеры многострочного текстового поля определяются значениями, введенными в однострочные текстовые поля....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru