nej, du skal bare lade datagriddet autogenere dine kulonner og via tankeoverførsel skal den så helt selv omdøbe navnene på dem til det du gerne vil have dem til at hedde.
I mellemtiden har jeg fundet ud af at gøre det, hvis jeg benytter autogenerate. Uden autogenerate kan jeg godt på atributten frem i datagrid'et, men ikke selve xmlfeltnavnet. Hvordan får man det frem?
Den påstår, at den ikke kan finde et felt med det angivne navn i dokumentet. Men jeg har selvfølgelig checket, at det både findes og staves på samme måde i xmldokumentet.
DataField skulle gerne henvise til navnet på den kulonne/property på det enkelte object i din collection du bruger som datasource.
dit at sortere med er det meget afhængigt af hvilket datasource du bruge. Ved en datatable vil man typisk bruge et DataView, mens man i f.eks. en custom collection selv skal implementere en Sort-metode som skal kaldes før man binder datagriddet igen.
Som datasource har jeg et xmldokument, hvor elementerne er af formattet: <tekst tal="*"> Jeg kan godt få "tal" ud, men "teksten" kommer ikke ud. Tekstfeltet sorterer jeg vha. "ASC" og "DESC". Men denne metode fungerer ikke, når det er et tal, der er tale om. Hvis jeg benytter den aligevel, så sorterer den efter: 1 10 11 . . . 2 20 21 osv.
Men hvis jeg nu vil have byttet om på rækkefølgen af de 2 kolloner (altså så #1 står på plads #2), hvordan gøres dette så, når jeg benytter "AutoGenerateColumns"?
det kan du ikke... det er derfor man bruger templating, så at man selv kan bestemme hvordan datagriddet skal se ud.
Men det lader til der ikke helt er styr på hvordan strukturen i xmldokumententet er skruet sammen, så i så fald er det jo bare at bruge DataField til at definere hvilken kulonne i dit datasource kulonnen i datagriddet skal svare til.
Jo, men hvis jeg sætter AutoGenerateColumns=false, så mister jeg også muligheder for at trykke på feltnavnet, og derved få datafelterne sorteret. Kan man slå denne egenskab til på en anden måde, hvis man har sat AutoGenerateColumns=false?
Jeg kan ikke skrive "SortCommand" i datagrid-linien. Kommandoen bliver ikke genkendt. Hvis jeg skriver det under "BoundColumn", så hedder den "SortExpression". Dette resulterer i, at columnoverskriften fungerer som et link. Men når jeg trykker på linket, så sker der intet. Hvor er fejlen?
Kommandoen hedder "OnSortCommand="DoDataBind"". Men når jeg skriver det (og DoDataBind har tilgangen "protected"), så får jeg fejlen: " Metoden DoDataBind()' passer ikke til stedfortræderen 'void System.Web.UI.WebControls.DataGridSortCommandEventHandler(object, System.Web.UI.WebControls.DataGridSortCommandEventArgs)' " Er det void, som er problemet eller hva'?
:) det er ligemeget... så længe at den metode SortCommand-event kalder har den rette signatur er det fuldstændig ligemeget hvad metoden gør bagefter, hvilken kode den har og hvilkde metoder den evt. måtte kalde videre hen.
det er nok en dum idé.. behold du din DoDataBind()-metode men lav en eventhandler til SOrtCommand på dit datagrid som så sørger for at kalde DoDataBind(), og evt. laver det der sortorder-gejl du skrev i 13/04-2005 16:19:05
Har jeg ikke allerede gjort det, når jeg har denne: private void DataGrid1_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e) ? Det er inde i den, hvor mit "gejl" står. Og sidst i den kaldes DoDataBind().
du skrev bare at du vil lave de to metoder om til een, altså tage hele indholdet fra DoDataBind og lægge det ind i DataGrid1_SortCommand. Det var det jeg kommenterede på og syntes du skulle lade være med.
det kommer an på hvad du vil. Jeg er lidt i vildrede her.
Dit oprindelige spørgsmål omhandlede at du selv kunne definere navnene på dine kulonnetitler. Det går jeg ud fra du har fået til at virke. Så er du gået i gang med at spørge om en masse sorting, og jeg har forsøgt at svare så godt jeg nu engang kunne.
Jeg er i tvivl om, om sorting virkede før du indførte en template på dit grid, eller om du skal have bygget sorting op fra bunden. Og hvor kommer paging ind i billedet? (Ja, dit spørgsmål hedder Paging og Sorting).
Er der nogen helt konkret som driller, eller er det hele dit grid som ikke virker?
Sorteringen virkede fint nok, før jeg "AutoGenerateColumns=false". Sorteringen skal selvfølgelig virke. Men jeg vil også kunne definere overskriften på mine kolloner. Derfor sætter jeg "AutoGenerateColumns=false". Så kan jeg godt få de rigtige overskrifter til kollonerne ind. Men så kan man ikke trykke på dem, så data i kollonerne bliver sorteret derefter. Sorteringsalgoritmen skulle være implementeret korrekt i filen. Paging fungerer også fint nok. Så den del kan vi vist godt bare se bort fra. Derfor er det sorteringen ved "AutoGenerateColumns=false", som driller.
jo, det havde jeg. Sorteringen virkede jo, som sagt, godt nok med "AutoGenrateColumns=true". Den kan bare ikke kaldes med "AutoGenrateColumns=flase", da overskriften så ikke fungerer som et "link". Men det er vel fordi, at der ikke er knyttet en eventhandler til kolloneoverskriften?
Det mener jeg bare, at jeg har prøvet (det er jo rimeligt oplagt). Det kan jo være, at jeg bare ikke har kaldt metoden rigtig. Men jeg vil lige efterchecke, når jeg kommer hjem. Skal OnSortCommand="DataGrid1_SortCommand" være et kald til den metoden "DataGrid1_SortCommand", eller hedder metoden bare "SortCommand", som så kaldete vha. "DataGrid1_SortCommand"?
OnSortCommand er bare en funktionalitet til at definere hvilken metode der skal udføres ved det givne event (så, DataGrid1_SortCommand er det man kan for en eventhandler)
Tja, nu fungerer sorteringen. Alfa og omega var <SortExpression="Titel_text">. Men nu er pagingfunktionalitteten jo røget sig en tur. Og den er jo kritisk nødvendig (se overskriften). Så...hvorfor er den pludselig væk?
Jeg ved ikke, om det har noget at sige. Men i "BoundColumn"-linierne har jeg altså ikke sluttet linien af med '/'. Hvis jeg sætter det tegn ind i linien, så giver det en kompileringsfejl.
Næ, den var ikke sat ind. Men når jeg gør det, så kommer en "streg" under kommandoen. Så der er et eller andet forkert. Jeg kan dog godt køre det. Funktionalitteten er der bare ikke.
I codebehindfilen mangler eventhandleren vist også. Men når jeg sætter den ind, så siger den, at DataGridPageChangedEventHander ikke kunne findes.
Rooolig nu, Heidi. Jeg går automatisk ud fra, at indlæggende her på sitet er alvorlige, og de derfor også gennemtænkt/testet. Det kan være, at jeg har fået den "forkerte" indstilling som følge af, at jeg er blevet hjulpet af andre personer på sitet, som netop gennemtestede koden, og at de virkelig gik op i det faktum "at hjælpe"!
jeg kan jo ikke teste hver eneste lille linje, og når man bare skriver det uden intellisense så kan der godt snige sig en stavefejl ind.
Det er fair nok at melde tilbage at noget kode ikke virker, men at lægge et indlæg om at compileren brokker sig over DataGridPageChangedEventHander, når der skulle have stået DataGridPageChangedEventHandLer, så kan jeg faktisk godt blive noget irrereteret.
Du kan mene om mig hvad du har lyst. Men på samme måde som du forventer at dem der hjælper gennemtester deres forslag, så forventerer jeg også et vis niveau af spørgeren. På samme måde som vi skal sætte os ind i din problemstilling, så bør du også selv sætte dig ind i den. Hvilken hjælp er det bare at få en kodestump, paste den ind, se det virke og så ikke tænke mere over det. Det er meningen man også skal FORSTÅ hvorfor det hænger sådan sammen. Hvorfor at netop den kodestump løste problemet.
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.