Gå til innhold

Anbefalte innlegg

Har en database med path til forskjellige custom controls. La oss f.eks si at jeg har en rad med controls/Image.ascx

 

Har en gridview hvor jeg ønsker å binde en kolonne opp mot denne pathen og på den måten vise kontrolleren i mitt gridview.

 

Hvordan kan dette gjøres?

 

En god link er vel så bra som en forklaring! :)

Lenke til kommentar
Videoannonse
Annonse
Har en database med path til forskjellige custom controls. La oss f.eks si at jeg har en rad med controls/Image.ascx

 

Har en gridview hvor jeg ønsker å binde en kolonne opp mot denne pathen og på den måten vise kontrolleren i mitt gridview.

 

Hvordan kan dette gjøres?

 

En god link er vel så bra som en forklaring! :)

6671267[/snapback]

Jeg tror ikke det holder med ren binding her, men jeg har tatt feil før.

google -> LoadControl .net?

Sannsynligvis i sammenheng med ItemCreated.

cell.Controls.Add( LoadControl(path) )

 

nosånt.

 

- grå -

Edit: slurveleif.

Endret av Gråskjegg
Lenke til kommentar

Ja nå har jeg ihvertfall kommet så langt at jeg har laget en klasse som arver fra GridView, slik at jeg kan override metoder i den.

 

Har bindet den til en datasource fra stored procedure. Ser at i ItemTemplate kan man legge til Image, button mm, så regner med det burde være mulig å legge til egne controls i griden...

 

Får søke litt rundt...

Lenke til kommentar

Finner ikke ut av det. Skal prøve å forklare litt nærmere her...

 

Har nå en kontroll som arver fra GridView som viser følgende etter å ha blitt bindet til en SQLreader:

ID | Preview

12 | modul1.ascx

14 | modul2.ascx

15 | modul2.ascx

 

Jeg trenger da antageligvis å overstyre en metode, OnDataBound muligens, hvor jeg sier at i kolonnen Preview skal den ta strengen og erstatte den med en kontroller som heter det som står i kolonnen.

 

Håper noen kan veilede meg litt her, nå har jeg snart ikke mer hår igjen å rive ut! :p

 

Edit: kan tenke meg jeg må finne en måte å få referert til den aktuelle cellen hver gang en rad opprettes, slik at jeg kan bruke noe sånt som cell.Controls.Add("innhold i cellen")... noe slikt... men aner ikke hvordan...

Endret av hpfarstad
Lenke til kommentar

Etter mye prøving og feiling fant jeg en metode jeg kunne override som lot meg referere en gitt celle.

 

Skal forklare hva jeg gjorde i tilfelle andre lurer på det samme.

 

protected override void OnRowDataBound(GridViewRowEventArgs e)
 {
 	// Sjekker at det ikke er header raden
 	if(e.Row.RowIndex != -1)
 	{
    // Loader kontrollen basert på strengen i cellen
   SystemControl _Preview = (SystemControl)Page.LoadControl(e.Row.Cells[0].Text.ToString());
   // Fjerner eksisterende tekst
   e.Row.Cells[0].Text = "";
   // Legger til kontrollen i cellen
   e.Row.Cells[0].Controls.Add(_Preview);
 	}
 	base.OnRowDataBound(e);
 }

 

Mulig det finnes bedre måter å gjøre dette på, men fikk nå løst problemet inn til videre. :)

Endret av hpfarstad
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...