Avatar billede jobless Nybegynder
13. januar 2007 - 09:15 Der er 19 kommentarer

Databinding i usercontrol og DBNull

Hej.

Jeg her en usercontrol hvori der er oprettet en property som bindes til en datasource, via Bind('mitfelt').

Dette virker fint så længe der er indhold i feltet, men hvis dette er DBNull får jeg en fejl ved bindingen.

Hvilken datatype skal min property have, for at jeg kan overføre værdien (integer eller DBNull) ?

MVH

JoBless
Avatar billede dr_chaos Nybegynder
14. januar 2007 - 10:52 #1
paste lige hvordan din property ser ud og hvordan du sætter den.
Avatar billede jobless Nybegynder
06. marts 2008 - 18:05 #2
undskyld forsinkelsen, men er faldet i samme problem igen:


    Public Property SelectedDate() As DateTime
        Get
            Return Picker.SelectedDate
        End Get
        Set(ByVal value As DateTime)
            If Not IsDBNull(value) Then
                Picker.SelectedDate = value
                Calendar.SelectedDate = value
                Calendar.VisibleDate = value
            End If
        End Set
    End Property


SelectedDate='<%# Bind("DatoFelt") %>'
Avatar billede dr_chaos Nybegynder
06. marts 2008 - 18:55 #3
Fejler den ved Bind ?
Avatar billede jobless Nybegynder
06. marts 2008 - 19:24 #4
ja, hvis databasefeltet indeholder null
Avatar billede dr_chaos Nybegynder
06. marts 2008 - 21:07 #5
Hvilken linie fejler din i ?
Avatar billede jobless Nybegynder
07. marts 2008 - 08:22 #6
<uc2:Calendar ID="Calendar1" runat="server" SelectedDate='<%# Bind("Deadline") %>' DefaultToNow="True" />


Ændringen fra typen 'DBNull' til typen 'Date' er ikke gyldig.
Avatar billede dr_chaos Nybegynder
07. marts 2008 - 15:38 #7
lav noget med
SelectedDate='<%# (Eval("Deadline")==null)? DateTime.MinValue: Eval("Deadline") %>'
Avatar billede jobless Nybegynder
08. marts 2008 - 10:19 #8
Kan jeg så stadigt to-vejs binde den til min sqldatasource ?
Avatar billede dr_chaos Nybegynder
08. marts 2008 - 15:27 #9
nej
Avatar billede dr_chaos Nybegynder
08. marts 2008 - 15:27 #10
Så skal du hente den manuelt ud.
Avatar billede jobless Nybegynder
08. marts 2008 - 15:58 #11
Det jeg er ude efter, er blot at kunne anvende en datatype som accepterer dato og null, så kan det jo fint virke... findes den mulighed ikke ?
Avatar billede dr_chaos Nybegynder
08. marts 2008 - 16:22 #12
Hvis du bruger asp.net 2.0 kan du lave en DateTime? altså med ? efter.
Avatar billede jobless Nybegynder
09. marts 2008 - 10:12 #13
Jeg bruger 2.0, hvad mener du med '?' efter...?
Avatar billede dr_chaos Nybegynder
09. marts 2008 - 10:22 #14
Der er indført nogle nullable typer i asp.net 2.0.
Hvis du gør sådan her:
DateTime dt = null;
Vil du få fejl.
Hvis du gør sådan her:
DateTime? dt = null;
Vil du ikke få fejl fordi DateTime? er en nullable datetime.
Du kan gøre det samme med int og andre datatyper.
Funktionaliteten i DateTime? er dog begrænset.
Avatar billede jobless Nybegynder
10. marts 2008 - 16:17 #15
Den brokker sig over DateTime?

Hvad hedder denne datatype i VB.net ?
Avatar billede dr_chaos Nybegynder
10. marts 2008 - 17:00 #16
Dim dt As System.Nullable(Of DateTime) = Nothing
Avatar billede jobless Nybegynder
10. marts 2008 - 17:39 #17
Jeg har testet:
Set(ByVal value As Nullable(Of DateTime))

men får en invalid cast exception når jeg laver en bind(datafelt)
Avatar billede dr_chaos Nybegynder
10. marts 2008 - 17:59 #18
Så må du droppe bind og bruge eval og hente værdierne ud manuelt.
Avatar billede jobless Nybegynder
11. marts 2008 - 08:01 #19
Det er sådan jeg har gjort fra starten, men det er en del mere kompliceret end at lave Bind, og derfor er det en løsning med Bind jeg er ude efter.
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