Member 14961724 Ответов: 1

Как я могу отделить строки из одной таблицы данных и поместить их в несколько различных представлений datagridviews? Vb.net


Я пытаюсь отобразить строку данных из одной формы excel в отдельных полях в форме. Я вижу решение в том, чтобы разместить несколько представлений datagridviews в одной форме и разделить строки, чтобы иметь 1 строку данных на dgv.

Где второй dgv (dg2) отображает строку 4 из таблицы datatable.

Любая помощь будет оценена по достоинству.

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

<pre lang="vb">Imports System.Data.OleDb

Public Class Form1
    Dim exceldata As New DataTable
    Public Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        Dim conn As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Ash\Dropbox\Sac U2\s1.xlsx;Extended Properties = ""Excel 12.0 Xml;HDR=YES"""
        Dim inserts As String = "SELECT [Name], [Date], [Description (basic)], [Location], [Size] FROM [sheet1$]"
        Dim adapter As New OleDbDataAdapter(inserts, conn)

        dg1.DataSource = exceldata
        adapter.Fill(exceldata)

        Dim row4 As DataRow = exceldata.Rows(4)
        dg2.DataSource = row1

        
    End Sub

Richard MacCutchan

Зачем вам нужна каждая строка в отдельном представлении DataGridView? Вся причина использования такого элемента управления заключается в том, чтобы отобразить все строки/столбцы таким образом, чтобы это было легко для пользователя.

Gerry Schmitz

Если вы идете по жизни, выбирая "самый простой" контроль для себя (против пользователя), вы ничего не добьетесь. Если кому-то нужна "форма", сетка ее не режет.

1 Ответов

Рейтинг:
0

CHill60

Вы на самом деле не сказали нам, в чем заключается проблема, которая заключается в следующем

dg2.DataSource = row1
Если вы перейдете к документации по Практическое руководство.Источник данных[^] вот увидишь
Цитата:
Класс DataGridView поддерживает Стандартную модель привязки данных Windows Forms. Это означает, что источник данных может быть любого типа, реализующего один из следующих интерфейсов:

- Интерфейс IList, включая одномерные массивы.
- Интерфейс IListSource, такой как классы DataTable и DataSet.
- Интерфейс IBindingList, например класс BindingList<t>.
- Интерфейс IBindingListView, например класс BindingSource.

Если вы обратитесь к документации для Класс DataRow[^] вы заметите, что он не реализует какой-нибудь из этих интерфейсов, что означает, что он не может быть использован в качестве источника данных для вашего DataGridView. Вы, наверное, хотите ... объект DataTable [^] для этого.

Что-то вроде этого может сработать (непроверено!)
Dim tempData As New DataTable
tempData.Rows.Add(row1)
dg2.DataSource = tempData
Это не ускользает от того факта, что это так. плохой дизайн пользовательского интерфейса - смотрите комментарии от @Richard-MacCutchan и @Gerry-Schmitz.
Нетрудно создать приятную и простую в использовании форму, состоящую из соответствующих элементов управления, и присвоить этим элементам управления отдельные значения в Столбцах datarow. Твой подход отдает ленью


Member 14961724

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

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

Я не думаю, что хорошо выразил эту проблему. То, что я пытаюсь сделать, - это отделить или вызвать отдельные строки из одной таблицы данных и отправить их в несколько представлений datagridviews (по одной строке на представление сетки). Надеюсь, что это имеет больше смысла