Toon posts:

[c# 2.0]Findcontrole in formview wil niet.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb echt bijna van alles geprobeerd (ik zeg "bijna" omdat ik anders de oplossing nu al zou hebben gevonden).

Het volgende :

code:
1
2
        Label test = (Label)FormView1.Row.FindControl("contentLabel");
        Response.Write(test.ToString());


Fout: System.NullReferenceException: Object reference not set to an instance of an object.

Ik heb zowat heel het internet afgezocht maar heb geen werkend antwoord gevonden. Dit zou blijkbaar "eigenlijk" moeten werken.

Het draait erom dat de Formview geladen wordt (databinding gebeurd in aspx, heb het ookal geprobeerd nogmaals in de aspx.cs te binden). De formview heeft een label met de id: contentLabel.

Ik wil de waarde van deze label uitlezen, de waarde hierin zou dus een blob tekst moeten zijn dat uit een database wordt gelezen dmv een dataset (*.xsd).

Vervolgens plaats ik deze hoop tekst in een FCKeditor.

Maar het draait er gewoon om dat ik de op een of andere manier een waarde uit een formview control kan lezen. Deze formview is gebind met een dataset (*.xsd).

Helping I R

  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 13-12-2024
heb je al eens in de source gekeken (html output) of de id 'contentlabel' wel bestaat? ;)

formview is een namingcontainer, zoek daar eens op in google.

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • pjonk
  • Registratie: November 2000
  • Laatst online: 22-11 20:39
Waarom via een FindControl? Kan je niet op een andere manier aan een ObjectReference naar die Label komen?

It’s nice to be important but it’s more important to be nice


  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 29-11 15:35
Post een een groter gedeelte van de code, en van de ASPX file waar het betreffende label staat?

  • martennis
  • Registratie: Juli 2005
  • Laatst online: 27-11 19:57
ik denk dat het met het casten niet goed gaat...
er staat me iets van bij, dat bij een mislukking van een expliciete cast, het object 'null' wordt gemaakt zonder exception te gooien

(correct me if i'm wrong)

Verwijderd

martennis schreef op dinsdag 19 december 2006 @ 18:53:
ik denk dat het met het casten niet goed gaat...
er staat me iets van bij, dat bij een mislukking van een expliciete cast, het object 'null' wordt gemaakt zonder exception te gooien

(correct me if i'm wrong)
Nee, dat is als er in deze vorm gecast wordt:
C#:
1
 FormView1.Row.FindControl("contentLabel") as Label;

  • 3volution
  • Registratie: September 2001
  • Niet online

3volution

tsja...

FormView.Row verwijst naar de onderliggende DataRow en niet naar de Controls.

Probeer eens FormView.FindControl("contentLabel") te gebruiken, waarschijnlijk bestaat je Label dan wel.

edit: (typo)

[ Voor 8% gewijzigd door 3volution op 19-12-2006 20:54 ]


Verwijderd

Topicstarter
Hierbij wat meer copy/paste code. Ik heb nu even als test de code in de Page_Load geplaatst.

ASPX
code:
1
2
3
4
5
<asp:FormView ID="FormView1" runat="server" DataSourceID="ObjectDataSource1" OnItemCreated="ObjectDataSource1_OnItemCreated">
        <ItemTemplate>
            <asp:Label ID="contentLabel" runat="server" Text='<%# Bind("content") %>'></asp:Label>
        </ItemTemplate>
    </asp:FormView>



ASPX.CS
code:
1
2
3
4
5
6
7
8
9
10
11
    protected void Page_Load(object sender, EventArgs e)
    {
        FCKeditor1.BasePath = "/FCKeditor/";
        if (!IsPostBack)
        {

            Label test = (Label)FormView1.Row.FindControl("contentLabel");
            Response.Write(test.ToString());
        }

    }


Ik heb het ook zonder Row geprobeerd maar hierbij ook weer een "object reference not set to an instance of an object.

Ik heb ookal geprobeerd een nieuwe instantie te trekken met "new" maar hierbij dezelfde foutmelding.

  • Daspeed
  • Registratie: Maart 2001
  • Laatst online: 19:03
Kun je er met debugging niet achterkomen welke controls er in je collection zitten dan?

  • PhysicsRules
  • Registratie: Februari 2002
  • Laatst online: 31-03 07:26

PhysicsRules

Dux: Linux voor Eenden

Waarschijnlijk ben je in Page_Load net te vroeg. Probeer eens je code in de FormView1_OnItemCreated eventhandler te zetten.

Verwijderd

Topicstarter
@PhysicsRules
Heb ik ookal gedaan, maar dit werkt ook niet.


@DrClearbottom
hmmm de debugger vind blijkbaar 0 controles! Ik zal hier even verder naar onderzoeken. ( je zou toch echt wel die label als controle verwachten ).


Weet iemand of er een ander manier is om deze waarde te krijgen? De formview wordt eigenlijk gewoon als rendervak gebruikt voor een html tekst. Ik gebruik een formview door de objectdatasource en dataset.

Ik kan wel een oplossing bedenken dat misschien werkt met Rendercontrole(), maar dit is wel erg omslachtig.

[ Voor 42% gewijzigd door Verwijderd op 20-12-2006 11:54 ]


  • PhysicsRules
  • Registratie: Februari 2002
  • Laatst online: 31-03 07:26

PhysicsRules

Dux: Linux voor Eenden

Wanneer vind je databinding plaats?

Verwijderd

Topicstarter
Alleen in de aspx code dmv een objectdatasource. Ik heb niet in de partial class iets gedaan om de datasource te binden. Dit gebeurd dan toch in in de aspx? <asp:Formview DatasourceID=.. ../> ?

Verwijderd

PhysicsRules schreef op woensdag 20 december 2006 @ 10:59:
Waarschijnlijk ben je in Page_Load net te vroeg. Probeer eens je code in de FormView1_OnItemCreated eventhandler te zetten.
Dat is inderdaad het probleem. De binding vindt pas plaats na de Page_Load en de FindControl wordt in de Page_Load gedaan, wanneer er geen Postback plaats heeft gevonden. De FormView heeft dus nog niet gebind in een eerder stadium (Initiele page visit). Deze actie moet dus bijv. in de PreRender of de OnItemCreated gedaan worden.

[ Voor 9% gewijzigd door Verwijderd op 20-12-2006 18:31 ]


  • PhysicsRules
  • Registratie: Februari 2002
  • Laatst online: 31-03 07:26

PhysicsRules

Dux: Linux voor Eenden

Krijg je uberhaupt gegevens te zien in je form? Anders moet je in je pageload een formview1.databind toevoegen.
Pagina: 1