faezeh66 Ответов: 4

Как найти повторяющиеся строки в табличном представлении


у меня есть gridview ,в нем есть несколько строк с одним и тем же идентификатором ,я хочу найти те же идентификаторы и скрыть один из них
помогите мне плз

4 Ответов

Рейтинг:
8

faezeh66

Function findIDInGrid(ByVal array As ArrayList, ByVal s As String) As Integer
      Dim digit As Integer = -1
      For Each obj As Object In array
          If obj.ToString() = s Then
              digit = array.IndexOf(obj)
              Exit For
          End If
      Next

      Return digit
  End Function
  Protected Sub grdGoods_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles grdGoods.PreRender


      Try
          Dim array As New ArrayList

          For Each row As GridViewRow In grdGoods.Rows
              Dim rug_Id As Label = CType(row.FindControl("rug_Id"), Label)
              If findIDInGrid(array, rug_Id.Text) <> -1 Then
                  grdGoods.Rows(findIDInGrid(array, rug_Id.Text)).Visible = False
              End If
              array.Add(rug_Id.Text)
        
              End If
          Next
end sub


Рейтинг:
2

Kim Togo

А как насчет того, чтобы никогда не добавлять дубликат в gridview в первую очередь ?


faezeh66

сначала я привязываю его к базе данных
затем я объединяю datatable с ним из другого места
теперь я хочу показать не дублирующуюся строку

Kim Togo

Если вы используете .NET 3 и выше. Вы можете использовать Linq для создания отличия по значению?

Abhinav S

Хороший подход. 5.

Kim Togo

Спасибо.

Рейтинг:
2

Abhinav S

Попробуйте отфильтровать этот дубликат идентификатора / строки в самом запросе.
Это был бы самый оптимальный способ избавиться от дубликатов.


Kim Togo

И тебе того же. Мой 5.

Abhinav S

Спасибо.

Рейтинг:
1

thatraja

Это не очень хорошая идея. Лучше справляться с этими вещами в источнике данных. Отфильтруйте данные в DataSource(DataTable или что-то еще) и затем привяжите их к GridView.

К вашему сведению
DataView.Свойство RowFilter[^]


Kim Togo

Мои 5 за то .RowFilter.