Fehler: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt

Neuling0815

Grünschnabel
Hallo ich bins wieder,
ein Problem hat sich erledigt und das nächste ist auch schon da.

Ich habe :google: diesen Artikel gelesen und dachte mir das kann ich auch auf ein DetailsView anwenden.
Pustekuchen! Ich finde keinen Event mit Member "Row" im DetailsView.
Also hab ich ein bisschen rumgebastelt und das kam raus:

Code:
Partial Class Detail
    Inherits System.Web.UI.Page

    Protected Sub DetailsView1_DataBind(ByVal sender As Object, ByVal e As System.EventArgs) Handles DetailsView1.DataBinding

     ' If CType(DetailsView1.FindControl("CheckBox2"), CheckBox) IsNot Nothing Then
        If CType(DetailsView1.FindControl("CheckBox2"), CheckBox).Checked Then
            CType(DetailsView1.FindControl("LinkButton1"), LinkButton).Visible = False
            CType(DetailsView1.FindControl("LinkButton2"), LinkButton).Visible = False
        Else
            CType(DetailsView1.FindControl("LinkButton1"), LinkButton).Visible = True
            CType(DetailsView1.FindControl("LinkButton2"), LinkButton).Visible = True
        End If
     ' End If

    End Sub
End Class

Dieser Code soll folgendes tun:
Wenn CheckBox2 (in einem TemplateField in einem DetailsView, bit-Typ im SQL Server) aktiviert ist sollen LinkButton1 & 2 (auch TF in DV) nicht mehr angezeigt werden. Also "Visible = False".
Hier kommt wieder folgender Fehler beim Debuggen:
NullReferenceException wurde nicht vom BenutzerCode behandelt.
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

Wenn ich es nun ohne Debuggen ausführe kommt nur die zweite Zeile.

So wenn ich nun das zweite IF wieder mit reinnehme ist der Fehler weg, aber es passiert auch nichts.
Folglich muss
Code:
CType(DetailsView1.FindControl("CheckBox2"), CheckBox)
NOTHING sein. Oder? Und warum?:confused:

Würde mich über eure Hilfe sehr freuen. Oder kann jemand den oben erwähnten Artikel für ein DetailsView umschreiben?:rolleyes:
Schonmal DANKE
MfG 0815
 

Nico Graichen

Erfahrenes Mitglied
Hi,

Wo kommt denn die Exception? Beim Zugriff auf den/die LinkButton?
Wenn ja: Hast du schon kontrolliert, ob FindControls auch einen LinkButton gefunden hat?

Selbiges gilt auch für die CheckBox. Liefert FindControls kein Control zurück, wirft der direkte Zugriff auf das Control eine Exception.
 

Neuling0815

Grünschnabel
Hi,
und erstmal Danke.
Ja du hast Recht:
CType(DetailsView1.FindControl("CheckBox2"), CheckBox)
liefert NOTHING zurück.
Wie kann ich sonst auf die CheckBox2 zugreifen? Oder wie bring ich FindControl dazu auch was zu finden?
Danke
0815
 

Neuling0815

Grünschnabel
Habs gelöst:

Code:
Partial Class Detail
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Page.FindControl("DetailsView1") ' diese Zeile hat gefehlt

        If CType(DetailsView1.FindControl("CheckBox2"), CheckBox).Checked Then
            CType(DetailsView1.FindControl("LinkButton1"), LinkButton).Visible = False
            CType(DetailsView1.FindControl("LinkButton2"), LinkButton).Visible = False
        Else
            CType(DetailsView1.FindControl("LinkButton1"), LinkButton).Visible = True
            CType(DetailsView1.FindControl("LinkButton2"), LinkButton).Visible = True
        End If

        If CType(DetailsView1.FindControl("CheckBox1"), CheckBox).Checked Then
            If CType(DetailsView1.FindControl("TextBox1"), TextBox).Text = Nothing Then
                CType(DetailsView1.FindControl("TextBox1"), TextBox).Text = DateTime.Now.ToShortDateString()
            End If
        Else
            CType(DetailsView1.FindControl("TextBox1"), TextBox).Text = Nothing
        End If

    End Sub

End Class

Danke
 

ikays

Grünschnabel
Was immer wieder gerne öfters gemacht wird:
Nicht vergessen Thema als done bzw erledigt zu setzen!
Gruss ikays