Avatar billede kkaen Nybegynder
03. marts 2006 - 15:17 Der er 23 kommentarer og
1 løsning

Få værdien ud af felter i GridView

Jeg har lavet et GridView, som jeg har fyldt op med dataværdier fra en database. Men jeg vil gerne lave en gennemsnitsberegning ud fra nogle af værdierne. Og i den henseende er jeg ikke interesseret i at lave forespørgsler til databasen igen. Derfor vil jeg gerne gå igennem nogle af felterne inde i GridView'et.
Jeg har forsøgt at implementere en IEnumerator, men opgav hurtigt. Nu prøver jeg linien:
GridView1.Columns.CloneFields();
Men denne vil heller ikke helt, som jeg vil.
Er der nogle, som ved, hvordan jeg kan løse dette problem?
Avatar billede Slettet bruger
03. marts 2006 - 15:20 #1
Hvad binder du til GridView Datasource ?
Avatar billede kkaen Nybegynder
03. marts 2006 - 15:49 #2
Jeg binder en AccessDataSource til GridView'et. Og dataene kommer også fint nok over i GridView'et. Så er der bare et andet problem: insertfunktionalitetten fungerer heller ikke mere. Men det har jo ikke så meget med traversering af data at gøre.
Avatar billede Slettet bruger
03. marts 2006 - 15:55 #3
Så bliver du nød til at spørge DB igen.
Avatar billede kkaen Nybegynder
03. marts 2006 - 15:57 #4
Så det er simpelthen ikke muligt, at gå ind i GridView efter data, så man dermed ikke overbelaster DB?
Avatar billede Slettet bruger
03. marts 2006 - 16:03 #5
Så skal du loade data til et Dataset som du kan regne på og derefter binde til dit GridView - det er også en mulighed.
Avatar billede dr_chaos Nybegynder
03. marts 2006 - 16:20 #6
hvordan ser dit gridview og ligger felterne hvor der skal laves gennemsnitsberegninger i samme row i databasen ?
Avatar billede kkaen Nybegynder
06. marts 2006 - 08:51 #7
Dataene bliver hentet ud fra 1 tabel i databasen. Den bliver så lagt over i gridview'et. Og det er så kolonnerne i gridview'et, som der skal laves nogle individuelle beregninger på. Men det vil jo da nok løse sagen, hvis man begynder med at lægge databaseudtrækket over i et dataset, før man lægger data ind i gridview'et.
Avatar billede kkaen Nybegynder
06. marts 2006 - 09:57 #8
Nu prøver jeg så at lægge dataudtrækket fra databaseforbindelsen over i et dataset. Men det lykkes ikke. Jeg har blot skrevet:
DataSet ds = AccessDataSource2.DataBind();
Og dette vil den ikke. Problemet er vist, at man ikke kan konvertere fra accessdatasourcen til et dataset så let. Men hvordan gøres det så?
Avatar billede Slettet bruger
06. marts 2006 - 11:35 #9
Du skal bruge en DataAdapter til at lave et dataset med og så binde dataset'et til din GridView.
Avatar billede kkaen Nybegynder
06. marts 2006 - 12:39 #10
Ja, men bliver jeg så nødt til at lave en forespørgsel til databasen igen for at få de fornødne oplysninger? Jeg kan nemlig ikke rigtig finde instansen af AccessDataSourcen i koden, og kan derfor heller ikke rigtig benytte "Fill"-metoden.
Avatar billede kkaen Nybegynder
06. marts 2006 - 15:27 #11
Nu har jeg lavet en implementering, hvor jeg sender sql-resultattet over i et dataset. Men nu kan jeg ikke få adgang til de enkelte værdier i dataset'et. Og det er jo dette, der er hele ideen. Hvordan får jeg fat på hver enkel værdi, så jeg kan foretage nogle beregninger?
Avatar billede Slettet bruger
07. marts 2006 - 07:19 #12
Dataset består at Tables, som igen består at rækker og kolonner, disse egenskaber bruger du til at tilgå data i dataset.
Avatar billede kkaen Nybegynder
07. marts 2006 - 08:42 #13
Yes, det regnede jeg også med. Men hvordan får jeg tilgang til det enkelte felt?
Avatar billede Slettet bruger
07. marts 2006 - 11:27 #14
DataSet ds = getADataSet();

ds.Tables[0].Rows[0][0]

ovenstående tilgår første table, første række og første kolonne.
Avatar billede dr_chaos Nybegynder
07. marts 2006 - 17:00 #15
Er det felter fra en række hvor der skal laves beregninger ?
Fordi så kan du gøre det meget nemmere.
Avatar billede kkaen Nybegynder
08. marts 2006 - 08:55 #16
Nej, det er felter fra en kolonne, hvor et bestemt kriterie er opfyldt. Hvor dette kriterie er opfyldt (f.eks. primærnøglen), der skal der laves nogle beregninger på et andet felt i rækken - sammen med det tilsvarende felt i andre rækker fra tabellen.
Avatar billede dr_chaos Nybegynder
08. marts 2006 - 09:04 #17
det vil sige at du skal kun bruge tal fra en række ?
Avatar billede kkaen Nybegynder
08. marts 2006 - 09:15 #18
yes. Eller msåke en bools værdi i fremtiden. Men p.t. er det kun et tal fra en række, som skal bearbejdes sammen med et tal fra en anden række.
Avatar billede dr_chaos Nybegynder
08. marts 2006 - 09:20 #19
hvis du har en itemtemplate kan du gøre noget i denne stil
<itemTemplate>
<asp:Label id="Test" runat="Server" Text='<%# FormatDineFelter((int) Eval("Felt1"), (int)Eval("Felt2")) %>' ></asp:Label>
</itemTemplate>
Avatar billede dr_chaos Nybegynder
08. marts 2006 - 09:21 #20
i codebehind har du
private string FormatDineFelter(int vaerdi1, int Vaerdi 2)
{
if(vaerdi1 > vaerdi2)
return "lala";
else
retuen "lolo";

}
Avatar billede dr_chaos Nybegynder
08. marts 2006 - 09:22 #21
på den måde kan du i virkligheden få alt det ud du vil.
Det var bare et simpelt eksempel
Avatar billede kkaen Nybegynder
08. marts 2006 - 09:42 #22
Nu bruger jeg jo VS2005. Hvis man bare går ind i koden, og retter den manuelt til, opfatter VS2205 så det? Altså så det også valid inde i designview'et?
Avatar billede dr_chaos Nybegynder
08. marts 2006 - 09:46 #23
Det ved jeg faktisk ikke bruger aldrig designview.
Men den bør være i stand til at opfatte itemtemplates
Avatar billede kkaen Nybegynder
07. juni 2012 - 15:37 #24
Lukkes
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester