Как я могу отсортировать следующие свойства в классе, а затем сохранить их в ArrayList?
Я заполнил это на ArrayList, но возникает проблема, когда страница перезагружается, порядок элементов в репитере изменится. вот значение куки-файлов в массиве
Dim myCookies As HttpCookie=HttpContext.Current.Request.Cookies("Mycard")
Dim varArryItems As ArrayList = New ArrayList
For i AsInteger=0 To varCookies.Values.Count-1
Dim AllValues As String()=myCookies.Values(i).Split("|"c)
Dim item As objCard=New objCard
item.P_ItemID=Integer.Parse(AllValues(0))
item.P_ItemTitle=AllValues(1).ToString
item.P_BrandTitle=AllValues(2).ToString
item.P_ItemImg=AllValues(3).ToString
item.P_ItemPrice=Decimal.Parse(AllValues(4))
'item.P_ItemQauntity=Integer.Parse(AllValues(5))
'item.P_ItemQauntitySelected=Integer.Parse(AllValues(6))
item.P_BarcodeID=Integer.Parse(AllValues(7))
item.P_TotalItemPrice=Decimal.Parse(AllValues(8))
varArryItems.Add(item)
Next
rptcart.DataSource=varArryItems
rptcart.DataBind()
Вот мои значения файлов cookie для хранилища класса objCard. Мне нужно отсортировать все свойства, которые я пытался подать в суд на метод сортировки ArrayList, это не сработало для меня.
Public Class objCard
Private ID As Integer
Private ItemID As Integer
Private BarcodeID As Integer
Private ItemTitle As String
Private BrandTitle As String
Private ItemImg As String
Private ItemPrice As Decimal
Private TotalItemPrice As String
Private ItemQauntity As Integer
Private ItemQauntitySelected As Integer
Public Property P_ID As Integer
Get
Return Me.ID
End Get
Set
Me.ID = Value
End Set
End Property
Public Property P_ItemID As Integer
Get
Return Me.ItemID
End Get
Set
Me.ItemID = Value
End Set
End Property
Public Property P_BarcodeID As Integer
Get
Return Me.BarcodeID
End Get
Set
Me.BarcodeID = Value
End Set
End Property
Public Property P_ItemTitle As String
Get
Return Me.ItemTitle
End Get
Set
Me.ItemTitle = Value
End Set
End Property
Public Property P_BrandTitle As String
Get
Return Me.BrandTitle
End Get
Set
Me.BrandTitle = Value
End Set
End Property
Public Property P_ItemImg As String
Get
Return Me.ItemImg
End Get
Set
Me.ItemImg = Value
End Set
End Property
Public Property P_ItemPrice As Decimal
Get
Return Me.ItemPrice
End Get
Set
Me.ItemPrice = Value
End Set
End Property
Public Property P_TotalItemPrice As String
Get
Return Me.TotalItemPrice
End Get
Set
Me.TotalItemPrice = Value
End Set
End Property
Public Property P_ItemQauntity As Integer
Get
Return Me.ItemQauntity
End Get
Set
Me.ItemQauntity = Value
End Set
End Property
Public Property P_ItemQauntitySelected As Integer
Get
Return Me.ItemQauntitySelected
End Get
Set
Me.ItemQauntitySelected = Value
End Set
End Property
End Class
Я использую Visual Studio 2017, просто мне нужно отсортировать все свойства, когда страница перезагружается, все элементы меняют порядок в репитере. Спасибо





Если у тебя есть
Public Class Card
Property ID As Integer
Property ItemID As Integer
Property BarcodeID As Integer
Property ItemTitle As String
Property BrandTitle As String
Property ItemImg As String
Property ItemPrice As Decimal
Property TotalItemPrice As Decimal
Property ItemQuantity As Integer
Property ItemQuantitySelected As Integer
End Class
Затем вы можете использовать List(Of Card) для хранения данных. Это имеет то преимущество, что компилятор знает, что в нем есть экземпляр Card, а не просто какой-то объект.
Dim myCookies As HttpCookie = HttpContext.Current.Request.Cookies("Mycard")
Dim cards = New List(Of Card)
For i As Integer = 0 To varCookies.Values.Count-1
Dim allValues As String() = myCookies.Values(i).Split("|"c)
Dim item = New Card
item.ItemID = Integer.Parse(allValues(0))
item.ItemTitle = allValues(1).ToString
item.BrandTitle = allValues(2).ToString
item.ItemImg = allValues(3).ToString
item.ItemPrice = Decimal.Parse(allValues(4))
'item.ItemQuantity = Integer.Parse(allValues(5))
'item.ItemQuantitySelected = Integer.Parse(allValues(6))
item.BarcodeID = Integer.Parse(allValues(7))
item.TotalItemPrice = Decimal.Parse(allValues(8))
cards.Add(item)
Next
И теперь, когда компилятор может перейти к свойствам записей в списке, вы можете
Dim dataToPresent = cards.OrderBy(function(c) c.ItemId).ToList()
rptcart.DataSource = dataToPresent
rptcart.DataBind()
и он покажет данные в выбранном вами порядке.
Если вам нужно упорядочить по различным свойствам во время выполнения, поиск по запросу «linq dynamic orderby» должен дать вам полезный код.
Я заметил, что у вас есть Private TotalItemPrice As String, который конфликтует с item.P_TotalItemPrice=Decimal.Parse(AllValues(8)). Если вы используете Option Strict On, Visual Studio укажет вам на подобные проблемы.
P.S. У вас есть Dim myCookies, но вы используете varCookies.Values.Count. Вы можете проверить, что это правильно.
Какую версию Visual Studio вы используете? Я спрашиваю, потому что
List(Of objCard)было бы намного лучше использовать, чем ArrayList. И Автореализуемые свойства может сэкономить вам много ввода.