03. april 2002 - 14:47Der er
12 kommentarer og 2 løsninger
jeg kan ikke se mine data fra dbi datalist/datagrid
Alt begyndelse er svær. Men alligevel? Jeg vil gerne sætte mig ind i Visual Studio.NET, men uanset hvilket eksempel jeg følger så ser jeg ikke mine data, når jeg forsøger at køre min ASP.NET, efter at have dragget-og-droppet div. komponenter ind på min side.
Det her gør jeg: Helt efter diverse eksempler skaber jeg et helt nyt tomt ASP.NET projekt. Jeg trækker herefter en OleDBdataAdapter ind på min form. Går igennem wizard, og skaber herunder en connection til min MS Access DB, samt en helt simpel SQL, fx. "SELECT * from tblPerson" Jeg genererer et dataset, under menupunktet data. Jeg dragger et datagrid ind på min form. Jeg vælger property for datagrid, og selecter mit dataset. MEN...
Jeg ser ikke noget data, når jeg build'er og browser. Jeg har prøvet at preview'e dataene, fordi jeg måske troede at der var noget galt med connection til DB, men jeg kan i preview se mine data, og jeg kan trykke på den dér fill-dataset knap, og se at der ER data.
Jeg har også prøvet at køre diverse aspx-examples fra nettet, hvor man i én fil har hele smøren, både connection, select-statement, databinding samt HTML medsamt ASP:Datagrid tag osv. En sådan aspx-side virker, og returnerer data synligt på skærmen, men jeg kan ikke gøre tilsvarende inde i VS.NET.
Jeg har tænkt på, om jeg manuelt skal import System.data.OleDB og System.data men jeg troede da ærlig talt, at når man dragger et oledbdataadapter objekt ind, og løber gennem dén wizard, så var der taget hånd om det hele.
Er der med andre ord, noget helt basalt man skal gøre, for at man kan se diverse dataset hentet fra en db, når man er i .NET og bygger ASP.NET/VB.NET?
Hej Søren Nej. Det skal virke. Men glem de wizards. Det kan bedre betale sig at kode the hard way. Jeg er selv blevet skuffet over dem mere end én gang. MVH
Du styrer normalt selv hvornår du vil have data bunde op på dit grid (eller hvilken kontrol du nu bruger). Hvis du bare vil se det når du åbner siden, kan du lave din binding i Page_load() i din code-behind (hvis du bare dobbeltklikker et tomt sted på din web-form, skulle du få vist koden, hvor .net selv har indsat funktionen).
Under antagelse af at du har et datagrid på siden ved navn DataGrid1 og en oledbdataadapter ved navn oledbdataadapter1, kan du få data på griddet med følgende kode i page_load():
DataSet ds = new DataSet(); oledbdataadapter.Fill(ds); DataGrid1.DataSource = ds; DataGrid1.DataBind();
oledbdataadapter.Fill(ds) benytter den default selectstatement der er blevet oprettet af wizarden til at loade data ind i datasættet.
Hvis du allerede (ved hjælp af wizards og hvad du ellers har benyttet) har fået angivet dit dataset som datakilde for dit grid, skulle det ikke være nødvendigt at kalde andet end DataGrid1.DataBind().
Men stadigvæk, inden jeg lukker spm og fordeler pointene... Jeg kan helt fint selv hard-code mine datagrid, datalists osv. Det er ikke mit problem.
Spørgsmålet går kort og godt på, om der er nogen, der kan få de her "#¤"¤&%§!.. :-) helt elementære wizards til at virke, og i givet fald, om du kan lure ud fra mit start-spørgsmål, hvorfor jeg ikke kan bruge dem.
Jeg ville jo helst kunne se, at mit udviklingsmiljø kan håndtere de helt simple eksempler fra diverse lærebøger, før jeg blindt kaster sig ud i at programmere større systemer, i den naive tro på at de nok virker helt fint på noget der er 50 gange større end der, der ikke virkede... ;-)
So as a concluding remark - kan du få simple datagrid-eksempler til at virke ved brug af wizards/ drag'n-drop programmering?
nej... det kan du ikke. du bliver nødt til - som et minimum - at angive hvornår du ønsker at få vist dine date (altså vha. databind-kommandoen, som for øvrigt kan angives som page.databind(), hvilket binder alle databundne kontroller på siden).
jeg har selv fået dem til at virke en enkelt gang, efter en helt dags kamp. Det kan godt lade sig gøre at fylde et datagrid uden at skrive noget decideret kode. Men jeg kan kun tilslutte mig de andre kommentarer, og gentage min egen : Lad det nu ligge. Der er aldrig nogen der blevet programmør af en wizard.
Desuden er resultatet fra en gennemgang af alle de møjwizards bare en masse ligegyldig kode. Vi snakker ingen overskuelighed - koden blive autogenereret i en speciel sektion som vs vil have man holder sig fra. Det er hjælpeløst, og totalt uforsvarligt. Hvordan skal man kunne stå inde for, og dokumentere, 3000 linjer microsoft kode? Kast dig bare ud i det, uden de wizards. Du har jo et godt crew her på eksperten :-)
1) wizarden genererer genske funktionelle proceederes, som bla. sikrer at man ikke kan hælde data ind i forkerte formatet..... giver mulighed for at sammenholde de data brugeren aktuelt ser på med det man evt. ønsker at opdatere med (hvilket kan være yderst hensigtsmæssigt da der arbejders med disconnectede recordsets som standard) mv.
2) Jeg har aldrig nogensinde været ude for nogle der har ønsket dokumentation af det autogenerede kode et udviklingsmijø laver ??!? Der kan da højest være tale om en kort kommentar vedr. meningen med området i koden, samt en eventuel henvisning til dokumentation for udviklingsmiljøet. (plejer du også at dokumentere den marshalling kode der bliver lavet til dig når du udvikler COM-komponenter i vs reffak ? nå ikke... det tænkte jeg nok :)
3) hvis man ønsker at tilgå sin database vha. stored proceederes, og ikke ønsker at lægge dem i selve databasen kommer man jo bare selv til at skulle kode det hele op fra bunden, og det bliver med garanti mindst lige så "ustruktureret" som det wizarden laver :) alene det at man på alle indtastningsfelter selv skal finde ud af hvorvidt det der er indtastet er iorden eller ej kan jo fylde en del, og her kan det da være ganske rart at kontrol af det er sat op i forvejen på en måde så man får fejlmeddelelsen INDEN man prøver at hakke det ind i databasen (det kan jo spare en del databasekald hvis man skulle interessere sig for perfomance).
jeg ved ikke hvilken verden du kommer fra, jeppejeppe, men følgende har ikke mødt den store anerkendelse på mit arbejde: "Jeg gider ikke dokumenterer dette stykke kode, fordi microsoft har skrevet det. Og så ved vi jo det virker". Det handler om at kode så andre kan forstå det / sætte sig hurtigt ind i det. Ikke kun hvad der er smart for dig, fordi du har opdaget en fancy wizard. Det lyder ikke som om du har arbejdet sammen med andre, eller også er det måske bare ikke kvaliteter du går op i?
Det korte af det lange : Wizards er IKKE nødvendige at få til at virke, før man kaster sig ud i at kode. Som sagt : Der er aldrig nogen der blevet programmør af en wizard.
Jeg kommer fra en verden hvor man finder det fornuftigt at forsøge at udnytte et udviklingsværktøj til 23.500,- så effektivt som muligt, og hvis du gjorde det samme ville du opdage at du kan udarbejde dit design (som forhåbentlig udgør en rimelig del af din dokumentation) og med det få genereret din kode på samme tid, hvilket kan spare en del tid. Desuden vil de kommentarer du ønsker medtaget i koden ligeledes komme med, og udgøre endnu en del af din dokumentation. med vs X.0 til og med vs 6.0 var det noget man var nødt til at investere i flere softwarepakker for (et typisk match ville være rational rose og vs x.0).
desuden er det du kalder en fancy wizard nogle værktøjer der er brugt tusindvis af timer på at udvikle for at letteregøre almindelige banale opgaver, som der alligevel ikke er nogle der gider sidde og spilde deres tid på. det at starte et projekt op i vs er jo sådan set også en wizard der sætter et skelet op til hvad du nu har valgt, således at du kan slippe for at kode det selv, og det er da nok en fancy wizard som jeg kunne forestille mig at du tit benytter, og finder hensigtsmæssig (og jeg forestiller mig heller ikke at at du når du f.eks. laver dig et lille program med brug af MFC, lige hiver et par år ud af kalenderen for at dokumentere CString, CList osv. + det skelet der bliver sat op for dig, men det må du selvfølgelig selv om).
og til sidst... jeg har aldrig sagt at wizars var nødvendige for at få noget til at virke, men jeg synes det er tåbeligt at begynde at "undervise" andre i IKKE at drage evt. nytte af dem fordi du selv har problemer med dem.
og kvalitet går jeg selvfølgelig op i, men jeg er ærlig talt ligeglad med hvordan du har hakket dine forløkker ind, hvis du har lagt dem i en klods med et fornuftigt interface og dertil hørende fyldestgørende beskrivelse af hvad klodsen og funktionerne under den gør. hvis du så sørger for at strukturere din kode så du ikke sidder med en funktion der udgør 14 siders spaghettikode, skulle en anden programmør jo uden problemer være i stand til at vedligeholde og videreudvikle det du har lavet.
Du har vist ikke forstået hvad man skal dokumentere, og hvad man ikke skal dokumentere. Ej heller har du vist forstået hvilke wizards vi snakker om; jeg ved ikke hvorfor du drager paralleller til wizards med helt andre funktioner, eller til CString mm. Måske skulle du læse spørgers spørgsmål igen? De omtalte fancy wizards generer tonsvis af kode, som i klart de fleste tilfælde ikke er ønskværdig. Jeg ved ikke hvor du starter din designfase, men min starter ikke med at bede en wizard om at sætte et komplet design op - men istedet på et papir, sammen med andre. Når vi kommer til kodning, skulle det være præcist klart hvad der skal bruges, og hvad der ikke skal bruges. Her har jeg heller ikke brug for at blive holdt i hånden af microsoft, eller få genereret en masse unødvendig kode - modsat dig? Der er ingen der underviser andre i IKKE at drage nytte af dem - blot, at deres mangel på virke, ikke skal sætte en kæp i hjulet for videre udvikling. Prøv at læse mine ovenstående kommentarer, efter du nu endelig må have forstået dette. Og hvad end du så har tænkt dig at åbenbare for os om de utrolige wizard : Prøv at holde dig til emnet, alt det andet er rimeligt uinteressant.
Når du selv lægger op til at tage mere overordnede udviklingsmål med ind i debatten ved at begynde at skrive om hvordan man skal kode, og hvordan man ikke skal kode, må du forvente at folk forholder sig til det også, men da det ikke virker som om du selv ønsker at forholde dig til den slags kommentarer, og tilsyneladende sætter en ære i at blive både personlig og sarkastisk, må du finde nogle andre at lege med. farvel.
Mit problem er, at jeg aldrig har henvendt mig til dig, men kun til spørger. Den sarkastiske tone startes af dig i din henvendelse til mig, i 7. kommentar.
Jeg gider ikke diskutere for diskussionens skyld, hvilket jeg synes du i høj grad har haft lyst til igennem hele denne debat. Hvis du søger en grund til min personlige tone, så ligger den heri. Og hvis dette ikke er noget du kan tage, så husk ordsproget : "Lad være at kaste med sten...".
Det ligger vist klart, at der er forskellige holdninger til wizards. Jeg havde blot håbet at kunne få datawizards'ene til at virke. Det kan jeg stadig ikke, men debatten var da interessant. Min undeviser i java sagde det sådan set ret rammende, engang: "Man skal have respekt for kode, der virker". Det samme må være gældende omkring wizards. Han sagde sådan set også at selve koden skal være skrevet, sådan at den er selv-dokumenterende. Man må ikke være i tvivl i kodegennemgangen, for så er selve koden for dårligt designet. Det "glæder" mig dog på en eller anden måde, at jeg ikke er ene om at have problemer med div. wizards, men omvendt er det da rart at høre at I begge giver ret I at egenkonstrueret kode kan erstatte problemerne mht "hjælpen". Jeg tillader mig at dele pointene mellem jer - ingen kom med løsningen på mit egentlige problem, men gjorde alligevel en ihærdig indsats for at give sin personlige mening til spørgsmålet.
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.