Avatar billede kallekk Nybegynder
05. august 2004 - 10:24 Der er 14 kommentarer

Sortering af en datatable

Hey

Jeg udfører en søgning fra en dot net grænseflade, og kalder her en stored procedure i en mssql base. Denne base retunerer så en datatable til grænsefladen, og jeg ønsker den selvfølgelig vist til brugeren. Mit problem er at den tabel som basen retunerer indeholder flere værdiere for primærnøglen, grundet en til mange relationer. Med dette menes at jeg f.eks for et søgeresultat der hedder at for hver kunde, er der flere tfl numre. Dette viser så i basen således:
Kunde1  12345678
Kunde1  87654322
Når jeg for resultatat skrevet ud i grænsefladen skriver den de to tlf numre oven i hinanden. Er der ikke en måde hvorpå jeg kan få numrene til at stå i forlængelse af hinanden?
Avatar billede snepnet Nybegynder
05. august 2004 - 10:52 #1
Hvis du laver et DataView kan du vise viewet (som man kan sortere med videre i)... Det plejer at være det nemmeste
Avatar billede snepnet Nybegynder
05. august 2004 - 10:54 #2
Du kan bare oprette det ved :
DataView dv = new DataView(<din tabel>);
Men du kan give sorteringsudtryk mv. direkte i konstruktøren hvis du vil.
Mvh
Avatar billede kallekk Nybegynder
05. august 2004 - 11:04 #3
Det jeg gør i øjeblikket er at læse min datatable ind i en repeater kontrol, er det det stadig muligt hvis jeg gemmer min tabel i dataviewet?
Avatar billede snepnet Nybegynder
05. august 2004 - 11:20 #4
ja det går lige så fint med at binde til et view, som til en tabel
Avatar billede kallekk Nybegynder
05. august 2004 - 11:39 #5
mit problem er som sagt at min data tabel ser sådan ud

Kunde1  12312312
Kunde1  54548787
Kunde1  87879854
Kunde2  78451245
Kunde2  78451254

Kan jeg få mit dataview til at se sådan ud:
Kunde1 12313113, 54548787,87879854
Kunde2 78451245, 78451254
Og hvordan gør jeg det?
Avatar billede snepnet Nybegynder
05. august 2004 - 11:49 #6
du kan lave selects på din tabel, eller sørge for at proceduren returnerer det på den måde du vil have det istedet.
Avatar billede snepnet Nybegynder
05. august 2004 - 11:52 #7
Men du må undskylde at jeg ikke lige var opmærksom på hvad det var du skrev... hæftede mig mest ved overskriften, og bed ikke så meget mærke i at du ville lave den slags om i præsentationen.
Avatar billede kallekk Nybegynder
05. august 2004 - 11:55 #8
Hvad er smartest, og kan du give et simpelt eksempel på det med lidt kode?
Avatar billede snepnet Nybegynder
05. august 2004 - 12:56 #9
skal du kunne opdatere i basen også med den tabel ?
Avatar billede kallekk Nybegynder
05. august 2004 - 13:09 #10
nej tabellen bruges kun til at vise søgeresultatet
Avatar billede snepnet Nybegynder
05. august 2004 - 14:10 #11
Hvis du vil gøre det i din kode... Kunne du gøre noget i denne stil :


// original tabel :
DataTable dt = <hvordan du nu får den>;

// en klon
DataTable ndt = dt.Clone();

// find alle unikke kunder i den originale tabel og læg dem i collection
StringCollection kunder = new StringCollection();

foreach(DataRow dr in dt.Rows)
{
    if(kunder.IndexOf(dr["kunde"].ToString()) == -1)
        kunder.Add(dr["kunde"].ToString());
}           

// lidt nips til brug en løkken
DataRow[] kundeRows = null;
DataRow newRow = null;
string resultingString;

// for hver unik kune
foreach(String kunde in kunder)
{
    resultingString = null;
   
    // hentes alle rækker af telefonnumre
    kundeRows = dt.Select(string.Format("kunde='{0}'",s));
   
    // som lægges sammen til en kommasepareret string
    foreach(DataRow dr in kundeRows)
    {
        resultingString += dr["kunde"].ToString() + ",";
    }

    // fjern det sidste komma
    if(resultingString.Length>1)
        resultingString = resultingString.Remove(resultingString.Length-1,1);
   
    // opret ny række til den nye tabel
    newRow = ndt.NewRow();

    // sæt kunden ind
    newRow["kunde"] = kunde;

    // og den resulterende streng
    newRow["telefonnumre"] = resultingString;               
}

så kan du binde til den nye tabel... som du også ville kunne oprette views til mv.
Avatar billede snepnet Nybegynder
13. august 2004 - 18:23 #12
jeg smider et svar her, hvis du skulle kunne bruge det til noget - men sig endelig til, hvis du ikke er i hus :o)
Avatar billede snepnet Nybegynder
21. august 2004 - 13:50 #13
kallekk.... har du fået det fikset, eller har du stadig problemer med det ?
Avatar billede snepnet Nybegynder
02. oktober 2004 - 03:25 #14
kallekk ?
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
Kurser inden for grundlæggende programmering

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