Convertere en Column til decimal
Jeg læser noget data ind i et DataSet fra en XML file og binder det til et DataGrid:Dim dvXML As DataView
sub Page_Load(sender as Object, e as EventArgs)
If not Page.IsPostBack then
Dim myDataSet as New DataSet()
myDataSet.ReadXml(Server.MapPath("books.xml"))
dvXML = New DataView ( myDataSet.Tables(0), _
"", _
"numberOfBooks DESC", _
DataViewRowState.CurrentRows)
dgBooks.DataSource = dvXML
dgBooks.DataBind()
end if
end sub
Jeg vil så have muligheden for at sortere på de rækker der nu er i min XML file ved hjælp af DataView´et.
Private Sub sorter(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEventArgs)
Dim dataGrid As DataGrid = source
Dim strSort = dataGrid.Attributes("SortExpression")
Dim strASC = dataGrid.Attributes("SortASC")
Dim myDataSet as New DataSet()
myDataSet.ReadXml(Server.MapPath("books.xml"))
dataGrid.Attributes("SortExpression") = e.SortExpression
dataGrid.Attributes("SortASC") = "Yes"
If e.SortExpression = strSort Then
If strASC = "Yes" Then
dataGrid.Attributes("SortASC") = "No"
Else
dataGrid.Attributes("SortASC") = "Yes"
End If
End If
strSort = dataGrid.Attributes("SortExpression")
dvXML = New DataView (myDataSet.Tables(0))
dvXML.Sort = strSort
If dataGrid.Attributes("SortASC") = "No" Then
dvXML.Sort &= " DESC"
End If
dataGrid.CurrentPageIndex = 0
dataGrid.DataSource = dvXML
dataGrid.DataBind()
End Sub
Nu er det bare sådan at der er nogle tal i nogle af rækkerne og andet data i de andre.
Sorteringen virker fint og XML´en kommer ind uden problemer, borset fra når jeg sortere.
Jeg vil derfor gerne kunne sortere ordenligt når det er tal så at 9999 -> 8888 -> 1000 -> 999 -> 7 og ikke 999 -> 9999 -> 8888 -> 7 -> 1000
osv. fordi at min column er sorteret som en string og ikke som decimal.
Jeg har prøvet: myDataSet.Tables(0).Columns(2).DataType = System.Type.GetType("System.Decimal")
Men jeg kan ikke ændre DataType når der er indlæst data og jeg kan ikke ændre en Table / Column der ikke er oprettet (dvs før jeg har læst XML´en ind)