Hej, Hm. Det är svårt att säga utan att veta hur din kod ser ut. Jag känner iaf inte till något sådant problem. Hej Björn, Hmm... Nej där ser inte problemet ut att ligga. Hej, Testade även att ändra i min underliggande Oracle-procedur, det verkar som att den post som hamnar sist i det ursprungliga datasetet hela tiden hamnar sist i min DataView, ngn som kan förklara det? <B>Har en annan datagrid som visar användare, fungerar på precis samma sätt och ger precis samma fel. </B> Nja, Magnus skriver att problemet verkar uppstå redan i DataView:n. Nej, tyvärr funkar inte detta heller. Problemet som jag nämnde hade med ifall lade till någon post efter att sorterat. Jag får släppa detta för tillfället, har inte tid att gräva mer i detta. Tackar så länge för de förslag och idéer som kommit fram.Sorteringen missar sista posten
jag har problem med sortering i en datagrid. Jag har ett SortCommand där jag fixar till sorteringen när användaren klickat på ngt av de kolumnhuvuden som finns. Problemet är att den sista posten i datagriden hela tiden ligger kvar sist, oavsett vilken av kolumnerna jag klickar på. Alla andra poster sorteras som de skall men aldrig den sista.
Trodde först att det var fel på den sista posten, tog bort den, men då "flyttar" felet till den post som istället ligger sist i utgångsläget. Ngn som känner igen detta?
/Magnus (kodar i C#)Sv: Sorteringen missar sista posten
Det låter som en off-by-one-bug.
Hur gör du när du sorterar?, sorterar du om med hjälp av SQL-queryn, eller använder du en DataView?
Kan du visa lite kod?
// MvH BjörneSv:Sorteringen missar sista posten
jag använder en dataview för vilken jag ändrar SortExpression beroende på vilken kolumn användaren vill sortera efter.
För att hålla koll på sorteringen sparar jag två parameter i sidans ViewState, dels vilken kolumn som datagriden är sorterad efter och dels om det är ASC eller DESC.
Jag har ett SortCommand:
<CODE>
private void dgDatabase_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
string currentSortColumn = (string)ViewState["currentSortColumn"];
string currentSortOrder = (string)ViewState["currentSortOrder"];
currentSortColumn = (currentSortColumn == null ? "" : currentSortColumn);
currentSortOrder = (currentSortOrder == null ? "" : currentSortOrder);
if(currentSortColumn == e.SortExpression.TrimEnd()) // Same column as at last sort
{
if(currentSortOrder == "ASC")
currentSortOrder = "DESC";
else
currentSortOrder = "ASC";
}
else // Another column was clicked
{
currentSortColumn = e.SortExpression.TrimEnd();
currentSortOrder = "ASC";
}
ViewState.Add("currentSortColumn", currentSortColumn);
ViewState.Add("currentSortOrder", currentSortOrder);
sSortExpression = currentSortColumn + " " + currentSortOrder;
BindData();
}
</CODE>
och en BindData()-funktion:
<CODE>
masterView.Sort = sSortExpression;
dgDatabase.DataSource = masterView;
dgDatabase.DataBind();
</CODE>
Har en annan datagrid som visar användare, fungerar på precis samma sätt och ger precis samma fel.
/MagnusSv: Sorteringen missar sista posten
Möjligtvis att man skulle testa att rensa DataGrid:en innan man binder om den.
Det är också interresant att göra en:
// Obs ej syntax-checkat
foreach DataRowView row in masterView {
Response.Write(row["ett-bra-fält"].ToString() + "<br />");
}
För att se ifall problemet ligger i DataGrid:en eller i View:n (Ligger den i View:n så är det en "rolig" bug)
Annars skulle jag vilja se DataGrid-definitionen (HTML:en), för att se ifall det är någon footer som spökar eller nåt.
// MvH Björne
Sv:Sorteringen missar sista posten
jag har testat lite nu och det är helt klart så att det är felsorterat i min DataView, hur jag än gör så är det samma post som kommer sist i min DataView och då blir det ju självklart också fel min datagrid.
Testade också att hårdkoda in sorteringsordningen så att den sätts första gången sidan körs,
<CODE>
masterView.Sort = "UPDATED ASC";
</CODE>
men ändå blir det fel, det är alltid samma post som ligger syst i vyn. Det har alltså inget med min DataGrid att göra. Några idéer?
/MagnusSv: Sorteringen missar sista posten
M a o när jag lägger på Sort = "..." på min DataView så fungerar allt bra förutom för den sista posten som alltid ligger kvar sist i min DataView.
???
/MagnusSv: Sorteringen missar sista posten
Eftersom dina andra griddar get samma fel...är det microsofts inbyggda grid du använder eller är det en 3:e parts grid?
Skulle du kunna klistra in den kod som microsoft automatiskt genererar för din grid, utifrån de inställnignar du gör i designläge i den "dolda" koden?Sv:Sorteringen missar sista posten
Om det stämmer så borde inte problemet ligga i DataGrid:en.
Jag googlade lite och hittade en bug ifall man har sorterat, och sedan lägger till en rad i DataTable:n.
Lösningen på det problemet var att se till att sätta sorteringen på DataView:n till "", för att sedan sätta tillbaka sorteringen efter att raden lagts till.
Skulle det kunna vara något?
// MvH BjörneSv: Sorteringen missar sista posten
Jag bygger upp min Dataview dynamiskt men det borde ju inte spela ngn roll, när DataView väl är skapad borde jag ju kunna sortera på den som jag vill.
/MagnusSv:Sorteringen missar sista posten
Jag funderade också på ifall det kunde vara någonting med Oracle-drivaren. Nu borde ju DataSet:et vara agnostisk vad det gäller data-källan, men det skulle ändå vara interresant att se ifall du får samma problem ifall du laddar datat manuellt eller från en MS-SQL-databas eller så.
Men det känns lite långsökt kanske.
// MvH BjörneSv: Sorteringen missar sista posten
/Magnus