Announcement

Collapse
No announcement yet.

Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

    Vorab ich bin neuling ;-)

    Warum bekomme ich diese Fehlermeldung:
    Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
    bei sl.SharePoint.Sites.termsofuse.OnInit(EventArgs e) bei System.Web.UI.Control.InitRecursive(Control namingContainer)
    [highlight=c#]
    namespace sl.SharePoint.Sites
    {
    public class termsofuse : Page
    {
    const string TAG = "termsOfUseAccepted";

    protected CheckBox CheckBox1;
    protected Label lblErrMsg;
    protected CheckBox CheckBox2;

    protected override void OnInit(EventArgs e)
    {
    this.CheckBox1.CheckedChanged += new EventHandler(CheckBox1_CheckedChanged);
    this.CheckBox2.CheckedChanged += new EventHandler(CheckBox2_CheckedChanged);
    }

    protected void Page_Load(Object sender, EventArgs e)
    {
    this.lblErrMsg.Text = "";
    this.lblErrMsg.Visible = false;
    }

    protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
    {
    }
    }
    }
    [/highlight]
    Zuletzt editiert von gfoidl; 12.10.2010, 18:35.

  • #2
    Hallo,

    der Fehler kommt daher dass das betroffene Objekt null ist. Geh mit dem Debugger durch den Code und schau wo der Verweis fehlt.


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Die Definition alleine reicht nicht, man muss auch ein Objekt erzeugen, bei der Checkbox wäre das zB:

      protected CheckBox CheckBox1 = new CheckBox();

      .. gilt natürlich auch bei einem Label (... = new Label(); )


      bye,
      Helmut

      Comment


      • #4
        Sorry ist für mich wirklich Neuland...

        ich rufe die Classe direkt aus einer *.aspx Seite auf, in dieser APX Seite wird die Checkbox erzeugt.

        Dann kann ich mir die Erzeugung des Objektes doch sparen?
        protected CheckBox CheckBox1 = new CheckBox();

        Quelltext der ASPX Seite:

        <%@ Import Namespace="Microsoft.SharePoint.ApplicationPages" %>
        <%@ Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls"
        Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml">
        <head id="Head1" runat="server">
        <meta name="WebPartPageExpansion" content="full" />
        <title>Nutzungsbedingungen</title>
        <link rel="stylesheet" href="termsofuse.css" type="text/css" media="screen" />
        </head>
        <body>
        <form id="form1" method="post" runat="server">
        <SharePoint:FormDigest ID="FormDigest1" runat="server" />
        </div>
        <p>
        <asp:CheckBox ID="CheckBox1" runat="server" OnCheckedChanged="CheckBox1_CheckedChanged"
        Text="Ja, ich stimme den Nutzungsbedingungen zu." AutoPostBack="true" /><br />
        <br />
        <asp:Label ID="lblErrMsg" runat="server" ForeColor="Red"></asp:Label>
        </p>
        </form>
        </body>
        </html>

        Comment


        • #5
          Mache selber nichts mit Sharepoint und/oder ASPX und bin daher ein Vermuter - aber wenn die Checkbox bereits an anderer Stelle definiert wurde, dann definiert "protected CheckBox CheckBox1;" eine lokale Variable mit demselben Namen wie in der ASPX-Seite, aber die Variable ist noch keine Referenz auf diese Checkbox. Da müsste nach der Definition irgendwo mal sowas wie "Checkbox1 = ASPXSeite.Checkbox1" stehen (ist jetzt nur sinngemäß) oder die Objektreferenz wird als Parameter übergeben oder so irgendwie.

          bye,
          Helmut

          Comment


          • #6
            Ich denke einfach dass es im OnInit die Controls noch nicht gibt. Packe mal

            Code:
            this.CheckBox1.CheckedChanged += new EventHandler(CheckBox1_CheckedChanged); 
            this.CheckBox2.CheckedChanged += new EventHandler(CheckBox2_CheckedChanged);
            in die PageLoad Funktion, wenn Du es UNBEDINGT hinschreiben willst. In Deiner aspx Seite wird der Event Handler sowieso ans Control gebunden:

            Code:
            OnCheckedChanged="CheckBox1_CheckedChanged"
            Also kannst Du eigentlich die OnInit Methode leer lassen. Dazu komm noch dass Du in Deiner OnInit Methode CheckBox2 verwendest die in Deinem aspx File gar nicht definiert wird.

            Ausserdem verwendet man auch nicht dieselbe ID 2 mal. CheckBox1 gibt es jetzt in Deiner Codebehind Datei und in Deiner ASPX Seite. Keine gute Idee Reicht eigentlich in der ASPX Seite

            Comment

            Working...
            X