2016-03-22 2 views
0

Так у меня есть набор данных, как показано нижеПоказать только определенные строки в DataTable

Col1 Col2 Col3 Col4 
Apple 1  10 Orange 
Apple 2  20 Orange 
Apple 3  30 Orange 
Apple 1  10 Pear 
Apple 2  20 Pear 
Apple 3  30 Pear 
Orange 1  10 grapes 
Orange 2  20 grapes 
ORange 1  10 kiwi 
Berries 1  10 apple 
Berries 1  20 Kiwi 

мне просто нужно что-то вроде

Col1 Col2 Col3 Col4 
    Apple 1  10 Orange 
    Apple 2  20 Orange 
    Apple 3  30 Orange 
    ORange 1  10 Grapes 
    Orange 2  20 Grapes 
    Berries 1  10 Apple 

Так в основном это col1 и COL4, если COL4 изменения для col1 как Я прочитал эти строки, я should'nt показать, что

Может кто-то пожалуйста, помогите мне

После первых годов предложение

For i As Integer = 0 To dtResults.Rows.Count - 1 
     Dim firstItem As String = dtResults.Rows(i)("col1").ToString() 
     Dim firstToB As String = dtResults.Rows(i)("col4").ToString() 
     dtResults.DefaultView.RowFilter = "col4= '" + firstToB + "'" 
     Dim tempTable As DataTable = dtResults.DefaultView.ToTable() 
     Dim Total As Integer = 0 
     For Each dr As DataRow In tempTable.Rows 
      'Dim firstItem As String = dr("col1").ToString() 


      'If (dr("col1") = firstItem) AndAlso (firstToBin = dr("col4")) Then 

      If item Is Nothing OrElse item <> dr("col1") Then 
       If Not item Is Nothing Then 
        dgv.Rows.Add() 
       End If 
       itemnum = dr("col1") 

      Else 
       itemnum = "" 
       desc = "" 
       size = "" 
       Total += dr("col3") 
      End If 
      item = dr("col1") 
      dgv.Rows.Add(dr('',dr('',dr('')...) 
      count += 1 
      'End If 
     Next 

    Next 
+0

Лучший способ сделать это, чтобы зафиксировать его на источнике. Откуда берутся данные? –

+0

Он исходит из параметров, переданных в хранимую процедуру –

+0

Что заставляет вас фильтровать? Пользователь, который вводит текст в текстовое поле? Попробуйте объяснить сценарий, который пользователь выполнит для достижения вашего результата ... – Alex

ответ

0

Так достичь, как упомянуто в вопросе здесь является то, что я сделал. Я всегда могу вносить изменения в хранимую процедуру, но я должен уметь видеть эти строки также в наборе данных для каких-то других целей. И так, чтобы связать сетку я взял элемент Роу, как показано ниже петли через

For i As Integer = 0 To dtResults.Rows.Count - 1 
     Dim firstItem As String = dtResults.Rows(i)("col1").ToString() 

     If acceptitem Is Nothing OrElse acceptitem <> firstItem Then 
      Dim firstToB As String = dtResults.Rows(i)("col4").ToString() 
      dtResults.DefaultView.RowFilter = "col4 = '" + firstToB + "' AND col1 = '" + firstItem + "'" 
      Dim tempTable As DataTable = dtResults.DefaultView.ToTable() 

      Dim Total As Integer = 0 ' dtResults.Rows(i)("col3").ToString() 
      For Each dr As DataRow In tempTable.Rows 


       acceptitem = dr("col1").ToString() 
       If item Is Nothing OrElse item <> dr("col1") Then 
        If Not item Is Nothing Then 
         dgv.Rows.Add() 
        End If 
        itemnum = dr("col1") 
        Total += Convert.ToInt16(dr("col3").ToString()) 

       Else 
        itemnum = "" 
             Total += Convert.ToInt16(dr("col3").ToString()) 
       End If 
       item = dr("col1") 
       dgv.Rows.Add(dr('',dr('',dr('').......) 

       count += 1 

      Next 
     End If 
    Next 

Спасибо так много для всех других предложений ...

0

Вам необходимо будет фильтровать строки вашего DataTable. Для этого вы можете использовать DefaultView.

Например:

Dim ds1 As New DataSet1 'Create an instance of your DataSet1 
ds1.yourDataTable.DefaultView.RowFilter = "Col4='Orange'" 

Если DataTables вашего набора данных создаются дизайнером Visual Studio, вы можете указать тип данных (строка, целое число, логическое) для каждого столбца. По умолчанию DataType устанавливается в строку. enter image description here

Вы можете сделать это двумя способами

+0

Не могли бы вы посмотреть, что я сделал с вашим предложением. Это не помогло мне –

+0

@nysu Я, возможно, не понимаю, что вы пытаетесь сделать, но для меня эти две строки кода заменят ваш цикл ... dtResults.DefaultView.RowFilter = "col4 = ' Orange '".... ... dgv.DataSource = dtResults.DefaultView – Alex

+0

Я вижу, что вы говорите. Но я сделал это так, как хотел. Скоро опубликует ответ. –

Смежные вопросы