Avatar billede prh Nybegynder
06. februar 2002 - 22:22 Der er 2 kommentarer og
1 løsning

Controls med DataSources i VS7 IDEen

Når man laver en webcontrol, f.eks inherited fra en BaseDataList, så får du også en "DataSource" property i din nye klasse... Denne property er synlig i VS7 IDE'en under properties vinduet, når din class control er valgt naturligvis... Dette gør det nice and easy at vælge en eksisterende Data Source, bare trykke på drop down listen og vælge den... :)

Men... Hvis man nu ikke er intereseret i at nedarve sin klasse fra f.eks BaseDataList, men blot vil nedarve den fra f.eks Control eller WebControl, så er det pludselig en anden sag hvis man vil have en DataSource property...

Det er ingen problem at lave en property der accepterer et object, og kalde dette for DataSource, og heller ikke at gøre den synlig i property vinduet... Men, hvis man nu vil have en drop down menu som den man ser når man nedarver den fra BaseDataList, som viser alle eksisterende DataSources, og også skriver disse korrekt ind på tag'en for webcontrol'en, så er det pludselig ikke så simpelt (well, det kan det godt være men jeg ved bare ikke hvordan endnu :) )...

Jeg ved at jeg manuelt kan referere til en datasource i tag'en på f.eks følgende måde :

<mytag:controlname DataSource="<%# DataSet1 %>"/>

Hvor DataSet1 er min DataSource...

Jeg har heller ikke noget problem i blot at få en dropdown menu hvor man kan vælge alle datasources, det gør jeg med følgende attribute på property'en for DataSourcen..

[ TypeConverter(typeof
(System.Web.UI.Design.DataSourceConverter)) ]

Problemet er bare her, at med denne TypeConverter, bliver værdien i tag'en (hvis jeg vælger DataSet1...

<mytag:controlname DataSource="DataSet1"/>

Eller sagt på en anden måde, en streng, og ikke
en databinding til dataset'et, hvilket jeg ikke
lige kan bruge til så meget som jeg gerne ville :)

Så, spørgsmålet er...

Er der nogen her der ved om det er en UITypeEditor, en TypeConverter, i så fald, om de er pre-skrevet af MS i framework'et som en hel del andre TypeConverters allerede er ???

Eller, bliver jeg nød til at skrive en TypeConverter selv, eller er der muligvis en her der allerede har skrevet en ???

Mvh,
Svøllen
Avatar billede reffak Nybegynder
09. februar 2002 - 11:42 #1
Hej
Kan du ikke indsætte et stykke kode der belyser problemet?

MVH
Avatar billede prh Nybegynder
09. februar 2002 - 20:36 #2
Vi kan f.eks forestille os at vi har en webcontrol der har følgende member variable og property...

private object myDataSource;

public object DataSource
{
    get
    {
        return myDataSource;
    }

    set
    {
        if (value is IList || value is IListSource)
            myDataSource = value;
        else
            throw(new ArgumentException("The given DataSource was not an IList or IListSource"));
    }
}

Lad os sige at man laver en instans af klassen, vi kalder instansen for myObject...

Vi har nu en instans af en DataSource som vi kalder, myData...

Du vil så kunne gøre følgende:

myObject.DataSource = myData;

Hvis det ikke er en DataSource fejlen den naturligvis da en DataSource er af typerne IList eller IListSource...

Inden i en aspx side vil du typisk kunne gøre det samme på følgende måde :

<mytag:myObject DataSource="<%# myData %>"/>

I de datasource brugende webcontrols som microsoft har lavet vil du i
properties menuen i VS7 kunne klikke på en pulldown menu for DataSource
propertien, denne vil så vise alle kendte komponenter der er DataSources,
når du vælger en sætter den så data sourcen korrekt inde i aspx siden...

Det der er spørgsmålet, er reelt hvordan du kan få din "DataSource"
property til at vise alle datasources i en drop down på samme måde, inde
i VS7 property menuen OG, når man så vælger en, skrive den korrekt ind...

Blot at få drop down menuen på er let nok, det kræver bare at jeg skriver
følgende attribute foran DataSource propertyen...

[ TypeConverter(typeof
(System.Web.UI.Design.DataSourceConverter)) ]

Hvilket så får VS7 ide'en til at bruge den typeconverter... Og der ved
viser den rigtige drop down... Problemet er bare at den ikke skrive
den valgte DataSource korrekt ind i propertyeni aspx filen...

Mvh Svøllen
Avatar billede prh Nybegynder
01. marts 2002 - 02:03 #3
Lukker den nu.
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