[C# / ASP.NET] Gridview template value uitlezen

Pagina: 1
Acties:

  • Wijnbo
  • Registratie: December 2002
  • Laatst online: 22-09 14:46

Wijnbo

Electronica werkt op rook.

Topicstarter
Hallo, ben nog niet zo heel lang bezig met ASP.NET 2.0 , maar loop tegen het volgende probleem aan : Data grid met o.a. het volgende templatefield:

ASP:
1
2
3
4
5
<asp:TemplateField AccessibleHeaderText="true" HeaderText="Productnummer" SortExpression="Prijs">
                <ItemTemplate>
                    <asp:Label ID="lblProductnummer" runat="server" Text='<%# Eval("Productnummer") %>'/>
                </ItemTemplate>
            </asp:TemplateField>


Hoe kan ik nu in mijn codebehind de inhoud hiervan uitlezen?

datagrid.Rows[0].Cells[1].Text werkt niet? Heb ook al iets geprobeerd met OnDataBound, maar de

EventArg blijft leeg....

  • lier
  • Registratie: Januari 2004
  • Laatst online: 18-11 17:09

lier

MikroTik nerd

EventArgs duidt op een event...welk event wordt afgevuurd ?
Kan je ook een stukje code posten ?

Eerst het probleem, dan de oplossing


  • Cloud
  • Registratie: November 2001
  • Laatst online: 03-11 10:25

Cloud

FP ProMod

Ex-moderatie mobster

Iets in de trend van:
C#:
1
2
3
4
foreach (GridViewRow gvr in gvOrders.Rows)
{
   string text = ((Label)gvr.FindControl("lblProductnummer")).Text;
}

Dat is in elk geval het mooiste, imho. Zoeken in cells en rows vind ik zelf een no-go, maar dat kan een kwestie van smaak zijn. Zoek gewoon het oorspronkelijke Control op en vraag de eigenschappen op die je nodig hebt :)

edit:
Het is natuurlijk afhankelijk van het event, maar als het Grid al compleet DataBound is, moet het bovenstaande je op weg kunnen helpen.

[ Voor 16% gewijzigd door Cloud op 22-05-2008 11:06 ]

Never attribute to malice that which can be adequately explained by stupidity. - Robert J. Hanlon
60% of the time, it works all the time. - Brian Fantana


  • Wijnbo
  • Registratie: December 2002
  • Laatst online: 22-09 14:46

Wijnbo

Electronica werkt op rook.

Topicstarter
wolkje schreef op donderdag 22 mei 2008 @ 11:05:
Iets in de trend van:
C#:
1
2
3
4
foreach (GridViewRow gvr in gvOrders.Rows)
{
   string text = ((Label)gvr.FindControl("lblProductnummer")).Text;
}

Dat is in elk geval het mooiste, imho. Zoeken in cells en rows vind ik zelf een no-go, maar dat kan een kwestie van smaak zijn. Zoek gewoon het oorspronkelijke Control op en vraag de eigenschappen op die je nodig hebt :)

edit:
Het is natuurlijk afhankelijk van het event, maar als het Grid al compleet DataBound is, moet het bovenstaande je op weg kunnen helpen.
De findcontrol methode had ik inmiddels zelf ook aan gedacht, maar ik hoopte eigelijk het te kunnen zonder.... beetje ruk dit. Maargoed, dit werkt ook.

  • Cloud
  • Registratie: November 2001
  • Laatst online: 03-11 10:25

Cloud

FP ProMod

Ex-moderatie mobster

Waarom vind je deze oplossing ruk? :? Nu laat je het vinden van de juiste control en alles, over aan het framework. Zo weet je enigszins zeker dat de gebruikte manier om het control te vinden een goede is, geschreven door Microsoft zelf.

Je kunt het natuurlijk altijd zelf bouwen (tot op zekere hoogte), maar waarom moeilijk doen als het ook makkelijk/snel kan? :) Waarom vind je zelf knoeien met een flinke diepte (want reken maar dat je diep moet gaan, voordat je die Text kunt uitlezen) van Rows en Cells met InnerHtml mooier?

Never attribute to malice that which can be adequately explained by stupidity. - Robert J. Hanlon
60% of the time, it works all the time. - Brian Fantana


  • Wijnbo
  • Registratie: December 2002
  • Laatst online: 22-09 14:46

Wijnbo

Electronica werkt op rook.

Topicstarter
Cloud schreef op donderdag 22 mei 2008 @ 12:34:
Waarom vind je deze oplossing ruk? :? Nu laat je het vinden van de juiste control en alles, over aan het framework. Zo weet je enigszins zeker dat de gebruikte manier om het control te vinden een goede is, geschreven door Microsoft zelf.

Je kunt het natuurlijk altijd zelf bouwen (tot op zekere hoogte), maar waarom moeilijk doen als het ook makkelijk/snel kan? :) Waarom vind je zelf knoeien met een flinke diepte (want reken maar dat je diep moet gaan, voordat je die Text kunt uitlezen) van Rows en Cells met InnerHtml mooier?
Dat bedoelde ik niet echt, ik had meer zoiets gedacht van een id meegeven en aanroepen maar... maargoed, ben inmiddels een stuk verder met ASP.NET / C# en begin het aardig door te krijgen.

  • Cloud
  • Registratie: November 2001
  • Laatst online: 03-11 10:25

Cloud

FP ProMod

Ex-moderatie mobster

Door de wijze waarop een Templatefield werkt kan dat helaas niet. :) Er kan immers van alles in zitten. Je kunt er een Label in zetten, maar ook een Image of een RadioButton, wát dan ook. De properties van al die dingen zullen (even afgezien van de gemeenschappelijke in de moederklasse Control) allemaal verschillen. Dus 'een ID opgeven en de waarde ophalen', gaat gewoon niet werken op zo'n type field. Want wát is de waarde en wélk ID vraag je op? ;)

Bij andere typen velden - geen templates - is alles van tevoren bepaald en werkt het opvragen van zo'n waarde dus ook vele malen simpeler.

Dit bovenstaande helpt je natuurlijk niet het mooier op te lossen, maar zo begrijp je wel beter wáárom het zo moet.

Never attribute to malice that which can be adequately explained by stupidity. - Robert J. Hanlon
60% of the time, it works all the time. - Brian Fantana

Pagina: 1