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? Inte optimal kod men fungerar... 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!Webb: Sortera en av datatabellerna i ett dataset
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.Sv: Webb: Sortera en av datatabellerna i ett dataset
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;
}
Sv:Webb: Sortera en av datatabellerna i ett dataset