สวัสดีและขอขอบคุณล่วงหน้า:
ดังนั้นฉันจึงพยายามดึงตารางจากฐานข้อมูล SQL และเรียงลำดับในคอลัมน์ "Date From" (DtFr) ซึ่งแสดงถึงการเริ่มต้นสัญญาเช่า ฉันคิดว่ามันจะง่ายเช่นนี้:
Dim XmlReader As New XmlNodeReader(xmlDoc)
Dim ds As New DataSet
ds.ReadXml(XmlReader)
myDt = ds.Tables("Cam")
If myDt IsNot Nothing AndAlso myDt.Rows.Count > 0 Then
Dim dv As New DataView(myDt)
dv.Sort = "DtFr ASC"
myDt = dv.ToTable(False, "Id", "Name", "Amount", "Unpaid", "DtFr")
End If
แต่อย่างที่คุณอาจเดาได้ว่านี่ใช้งานไม่ได้ (ผู้ใช้ใหม่ ไม่สามารถโพสต์ภาพได้ มันเป็นเพียงภาพวันที่ที่ไม่เรียงลำดับ)
อาจเป็นเพราะในบางจุดของการดึงข้อมูลไม่ใช่ประเภท Date อีกต่อไปและเป็นสตริงหรืออะไรสักอย่าง? ถ้าฉันใช้วันที่ที่เรียบง่ายกว่า เช่น 1/1/2555, 2/1/2555, 3/1/2555 หรือ 1/1/2555, 2/1/2555, 1/3/2555 เป็นต้น มันก็ไม่เป็นไร แต่เป็น คุณจะสังเกตเห็นข้างต้น หากฉันมีหลายเดือน มันก็จะเรียงลำดับไม่เป็นระเบียบ
ฉันพยายามยุ่งกับวัฒนธรรม โดยคิดว่าอาจเป็นได้ว่าคัดแยกพวกมันในช่วงหลายเดือนก่อนปีโดยไม่เกิดประโยชน์... ฉันรู้สึกสับสน ความช่วยเหลือ แนวคิด หรือคำแนะนำใดๆ ที่เป็นประโยชน์คงจะดีมาก
ชื่นชมมากจอช
แก้ไข: คุณเป็นอัจฉริยะ ขอบคุณมาก คุณพูดถูกเกี่ยวกับค่าสตริง ฉันเพิ่มคอลัมน์ข้อมูลที่เรียกว่า sortDtFr ลงใน DataTable และกำหนดให้ System.DateTime เป็นประเภทข้อมูลและวนซ้ำตามแถวต่างๆ โดยตั้งค่าของคอลัมน์ใหม่ให้เท่ากับคอลัมน์เก่าที่แปลงเป็นวันที่ นี่คือรหัสสำหรับผู้ที่สนใจ:
ds.ReadXml(XmlReader)
myDt = ds.Tables("Cam")
myDt.Columns.Add(New DataColumn("sortDtFr", System.Type.GetType("System.DateTime")))
For Each row As DataRow In myDt.Rows
row("sortDtFr") = CDate(row("DtFr"))
Next
If myDt IsNot Nothing AndAlso myDt.Rows.Count > 0 Then
Dim dv As New DataView(myDt)
dv.Sort = "sortDtFr ASC"
myDt = dv.ToTable(False, "Id", "Name", "Amount", "Unpaid", "DtFr", "sortDtFr")
End If