Webb: Sortera en av datatabellerna i ett dataset
Jag hämtar upp ett cachat dataset (= DatasetX) och skulle behöva göra en sortering i en av data tabellerna i dataset:et men jag lyckas inte få till det. För när jag väl tilldelar dataset:et till en gridview så funkar inte sorteringen. Någon som vet hur man gör?
Jag ska ställa upp några kriterier:
1. Det måste vara ett dataset som skickas in i gridview datasource:n och inte en datatabell eller datarows.
2. Sorteringen ska inte göras i sql:n eftersom det är ett cachat dataset.
Svara
Sv: Webb: Sortera en av datatabellerna i ett dataset
Inte optimal kod men fungerar...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | private DataSet SortDataSet(DataSet ds) { // först, vi sorterar om hela datasetobjektet så det är sorterat på sekvens DataView dv1 = new DataView(); if (!ds.Tables[0].Columns.Contains( "sortdata" )) ds.Tables[0].Columns.Add( new DataColumn( "sortdata" , typeof ( int ))); foreach (DataRow dr in ds.Tables[0].Rows) { // här lägger du till ditt fält som du vill sortera int sortData = int .Parse( "0" + dr[ "sequence" ].ToString().Trim()); dr[ "sortdata" ] = sortData; } dv1.Table = ds.Tables[0]; dv1.Sort = "sortdata" ; // sorterar på det numeriska fältet DataTable newtable = dv1.ToTable( "sorted" ); ds.AcceptChanges(); ds.Tables.Add(newtable); // raderar tabellen Table och ser till att vi bara har 1 tabell, sen döps den nya sorted åter om till table // antingen heter den table eller så heter den grid om det nu är en postback.. if (ds.Tables[0].TableName == "Table" ) { ds.Tables.Remove( "Table" ); ds.Tables[ "sorted" ].TableName = "Table" ; } else { ds.Tables.Remove( "Grid" ); ds.Tables[ "sorted" ].TableName = "Grid" ; } ds.Tables[0].Columns.Remove( "sortdata" ); return ds; } |
Svara
Sv:Webb: Sortera en av datatabellerna i ett dataset
Jag misstänkte att det var den vägen man var tvungen att ta. Det är ändå konstigt att det inte finns någon sådan funktionalitet inbyggd. Tack för hjälpen!
Svara