Member 14621280 Ответов: 1

Comobox фильтра стоимость объекта datagridview и ComboBox должны показать одинаковое имя только былым и фильтр


Привет
У меня есть доступ к базе данных под названием "DB", а имя таблицы - "Empdata" и следующие сведения в colomn

ID	Name	Day	Amount
1	Mani	Monday	50
2	Subash	Tuesday	100
3	Mani	Tuesday	100
4	subash	Mondy	50
5	Mani	Wednesday	100
6	Subash	Wednesday	50
7	Mani	Thursday	100
8	Mani	Friday	10
9	Mani	Saturday	30
10	Subash	Saturday	20
11	Subash	Sunday	100



в vb.net у меня есть имя Datagridview1 как "dg1" и загружено с источником данных
combobox1 имя как "compbo"
1. я хочу заполнить имя в compbo
2.я хочу использовать combobox(compbo) для фильтрации данных из Datagridview1 (dg1)
3. все показано правильно, но combobox показывает одно и то же имя несколько (ofcouse столбец имеет то же самое, но он должен показывать одно и то же имя в одном имени) для ex. Мани должен показывать только одно имя, если я фильтрую, что все детали Мани должны показывать
4. И, наконец, фильтр в datagridview не работает

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

 Public Sub LD()
        ConnD()
        sql = "select ID,Name,Day,Amount from Empdata"
        cmd = New OleDbCommand(sql, conn)
        da = New OleDbDataAdapter(sql, conn)
        da.Fill(dt)
        bs.DataSource = dt
        dr = cmd.ExecuteReader()
        dg1.DataSource = bs
    End Sub



    Public Sub fillcombo()
        ConnD()
        Try
            sql = "select distinct ID,Name,Day,Amount FROM Empdata "
            cmd = New OleDbCommand(sql, conn)
            da = New OleDbDataAdapter(sql, conn)
            da.Fill(dt)
            bs.DataSource = dt
            dr = cmd.ExecuteReader()
            compbo.Items.Clear()
            dg1.DataSource = dt


            Do While dr.Read
                compbo.Items.Add(dr.GetValue(1).ToString)
                

            Loop

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
        conn.Close()
        conn.Dispose()
        conn = Nothing



    End Sub
End Class

Member 14621280

Datagridview не фильтрует значение

1 Ответов

Рейтинг:
0

Richard MacCutchan

В вашем fillcombo метод вы загружаете DataGridView во второй раз, что не является необходимым. Кроме того, вы читаете каждый столбец и добавляете поле name каждой записи (ваше отдельное предложение ссылается на столбец ID), которую вы получаете из базы данных. Вам нужно только прочитать поле Имя для выпадающего списка. Так что все, что вам нужно, это что-то вроде:

Public Sub fillcombo()
    ConnD()
    Try
        sql = "select distinct Name FROM Empdata"
        cmd = New OleDbCommand(sql, conn)
        dr = cmd.ExecuteReader()
        compbo.Items.Clear()
        
        Do While dr.Read
            compbo.Items.Add(dr.GetValue(0).ToString)
        
        Loop
    
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
    conn.Close()
    conn.Dispose()
    conn = Nothing
End Sub


Member 14621280

благодарю вас так много, но фильтрации не происходит в элементе управления datagridview

Richard MacCutchan

Как я и предполагал в своих ответах на ваш предыдущий вопрос, ничего не произойдет, если вы не заставите это произойти, выполнив какой-то код. Каждый раз, когда вы выбираете имя из выпадающего списка, вам нужно будет перезагрузить DataGridView с данными, относящимися к выбранному имени. Таким образом, вам нужен обработчик событий для комбинированный список.Метод OnSelectedItemChanged(EventArgs) (System.Окна.Формы) | Microsoft Docs[^] событие. В этом коде вам нужно будет отфильтровать записи данных в вашем наборе данных и обновить представление. Вам нужно остановиться и подумать о том, как вы заставляете вещи происходить, и записать логические шаги, которые требуются, прежде чем писать какой-либо реальный код.