04. marts 2003 - 23:12Der er
10 kommentarer og 1 løsning
Opdatering af DataSet via sortered DataGrid
Jeg har et DataSet som jeg bruger til at populate et DataView, som så sørger for sortering af dataene. DataView bruger jeg så til at populate et DataGrid.
Det fungere også fremragende, både med sortering og ved select og edit. Problemet opstår når jeg skal synkronisere ændring i DataGrid'et med mit DataSet.
Det Item jeg får fat i min handler til UpdateCommand eventen er det rigtige item, men jeg kan ikke få oversat indexet så det passer med det index itemet har i mit DataSet (eller mit DataView for den sags skyld).
Jeg har prøvet både med ItemIndex og DataSetIndex, men de er tilsyneladende altid ens.
Min kode fejl sådan set ikke noget, forudsat dataene ikke er blevet sorteret, så det er ikke der. Jeg får bare opdateret den forkerte række.
Nogen der ved hvordan man, udover at bruge slave metoden, kan gør det?
sekhmet_ds>> problemet er jo at når du har sorteret dit datagrid, så passer index for en row jo ikke med det tilsvarende index i dit dataset :( Altså bliver man nødt til at løbe alle rækkerne i datasettet igennem for at finde den der matcher med den du valgte i datagriddet.
Det er jeg med på, men burde DataSetIndex så ikke indeholde det korrekte index ind i mit DataSet? De har jo selvf været en tur omkring klienten, men derfor burde det jo ikke være noget problem i det mindste at gemme dem, og så lade det være op til udvikleren at sikre at de stadig gælder.
Property Value The index number of the DataGridItem object from the bound data source.
i og med at du binder dit datagrid til DataView'et er det vel index fra det og ikke DataSettet der gælder... og når du sorterer dit dataview så matcher Index i dit dataview og datagrid vel ikke hinanden?
Jamen, eftersom DataViewet har en direkte reference til rækkerne i mit DataSet har det jo samme effekt at jeg rette i Dataene i mit DataView som i mit DataSet.
Jeg har lige lavet et forsøg hvor jeg laver et DataSet med 10 tal i faldende rækkefølge. Disse sorterer jeg med et DataView og propper dem ind i et DataGrid. I den første celle har jeg værdien, og i den anden celle har jeg DataSetIndex, som jeg "manuelt" skriver ind efter Page.DataBind().
Cellen med DataSetIndex er altid lig med rækken i mit DataGrid, men hvis jeg udskriver Dataene fra mit DataView ved brug af DataSetIndex får jeg en anden række end den indexet peger på i mit DataGrid. Og dette er vel at mærke uden at jeg har haft nogen round-trips.
Hvad er det så lige jeg kan bruge DataSetIndex til? Det er jo så et andet spr., hvorfor der skal oprettes et nyt indlæg, så lad os bare sige at det var det.
sekhmet_ds>> tjaa... det kan du for så vel have ret i... og jeg må ærligt indrømme, at jeg ved det ikke. Jeg har aldrig brugt DataSetIndex, faktisk er det sjældent at jeg overhovedet bruget DataSet, og når jeg endelig gør, så plejer jeg at bruge DataView's FindRow-funktion.
sekhmet_ds>> jeg tror også det er det mest "rigtige"... I og med man bruger DataView tror jeg det er meningen at man skal bruge den til al kommunikation med DataSet'et... også sådan noget med at slette og tilføje rækker
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.