[ASP.NET] LinkButton @ runtime aan ButtonColumn toevoegen

Pagina: 1
Acties:

  • hwschuur
  • Registratie: April 2003
  • Laatst online: 07-11-2024
Haj, ik heb een probleempje met het toevoegen van @ runtime gecreëerde LinkButtons aan een ButtonColumn (via de propertybuilder aangemaakt en headertext voor elk item opgegeven) in een DataGrid.

C#:
1
2
3
4
5
6
7
8
9
10
11
for(int i = 0; i < aantalRijen; i++)
{
     LinkButton lb = new LinkButton();
     lb.Text = "KLIK";

     DataRow newRow = statusTable.NewRow();
     newRow["kolom1"] = "bla";
     newRow["linkbuttonkolom"] = lb;
                        
     TestTable.Rows.Add(newRow);
}

Voor deze code is er natuurlijk een DataTable gemaakt met overeenkomstige kolommen voor de kolommen in de DataGrid (de kolom linkbuttonkolom wordt dus ook voor de DataTable gemaakt); zoals je in bovenstaande code kunt zien wordt er een aantal rijen gemaakt die één voor één aan de DataTable toegevoegd worden, waarna deze als Source voor de DataGrid wordt opgegeven en ook aan de DataGrid gebind wordt.

Probleem:
Het toevoegen van de LinkButton aan de DataGrid in de kolom "linkbuttonkolom". In de propertybuilder van de datagrid kun je opgeven dat het een ButtonColumn betreft en dat er Linkbuttons in moeten komen, maar het toevoegen van deze buttons gaat @ runtime dus niet lekker; ze verschijnen simpelweg niet.
Nu geef ik bij het maken van die DataTable ook aan dat de kolom linkbuttonkolom van het type Button is (er zitten immers LinkButtons in)...

Heeft iemand iets dergelijks al geprobeerd? Ik heb via Google en via de Search gezocht maar nergens iets gevonden waarbij de ButtonColumn @ runtime gevuld wordt met LinkButtons door deze toe te voegen aan een rij van deze DataTable (en de DataTable vervolgens te binden).
Ik kan vrijwel niet afwijken van deze manier omdat de rest van het DataGrid ook per rij (via een DataTable) gevuld wordt.. Alvast bedankt.

[ Voor 9% gewijzigd door hwschuur op 26-02-2004 09:40 . Reden: tja ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Is het niet gewoon een property van de ButtonColumn class die de weergave van je button bepaald (push of link) ?

code:
1
2
3
ButtonColumn bc = new ButtonColumn();
....
bc.ButtonType = ButtonColumnType.LinkButton;

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

Het toevoegen van de LinkButton aan de DataGrid in de kolom "linkbuttonkolom". In de propertybuilder van de datagrid kun je opgeven dat het een ButtonColumn betreft en dat er Linkbuttons in moeten komen, maar het toevoegen van deze buttons gaat @ runtime dus niet lekker; ze verschijnen simpelweg niet.
* gorgi_19 heeft geen problemen met het toevoegen @ runtime van deze columns? :? Alleen geldt het principe van dynamische controls hier weer; je moet het op tijd toen, je moet het consequent doen (voor iedere request, postback of niet), etc.
Je kan ook lui zijn; voeg 2 buttoncolumns toe, eentje link, ander push en zet er eentje op visible = true en de ander op visible = false.

@whoami
Dat is niet @ runtime, dan kom je te zitten met dynamische controls toch?

[ Voor 22% gewijzigd door gorgi_19 op 26-02-2004 09:44 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • hwschuur
  • Registratie: April 2003
  • Laatst online: 07-11-2024
eh?? :? :?

Het gaat niet om de soort Button, die moet gewoon LinkButton zijn (ivm dat er dan handig via HTML een plaatje kan komen te staan). Het gaat om het toevoegen van dat kreng aan een ButtonColumn aan een DataGrid via een DataTable die gebind wordt.

@gorgi:
* gorgi_19 heeft geen problemen met het toevoegen @ runtime van deze columns?
Ik ook niet, het gaat namelijk om het toevoegen van de LinkButtons aan de ButtonColumn (die gemaakt is via de propertybuilder) aan de DataGrid via een DataTable die gebind wordt.... Het type van de overeenkomstige kolom in de DataTable heb ik Button gemaakt.

[ Voor 42% gewijzigd door hwschuur op 26-02-2004 09:45 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Ik vind toch een bepaald ding vreemd hoor....

Je maakt een Button, en die voeg je toe aan je datatable? Waar is het principe van scheiding tussen gegeven en presentatie naar toe?
Een Button voeg je toe aan je grid, niet aan je datatable.

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

AppleWatcher schreef op 26 februari 2004 @ 09:43:
eh?? :? :?

Het gaat niet om de soort Button, die moet gewoon LinkButton zijn (ivm dat er dan handig via HTML een plaatje kan komen te staan). Het gaat om het toevoegen van dat kreng aan een ButtonColumn aan een DataGrid via een DataTable die gebind wordt.
Dan maak je een templatecolumn? :? En anders geef je als text van de linkbutton op een <img src -tag, mits het niet automatisch html encoded wordt.

Dan zit er niets anders op dan een eigen templatecolumn te maken.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
gorgi_19 schreef op 26 februari 2004 @ 09:42:
[...]

@whoami
Dat is niet @ runtime, dan kom je te zitten met dynamische controls toch?
Als ik dit doe:

code:
1
2
3
4
5
6
7
myDataGrid.AutoGenerateColumns = false;

BoundColumn bc = new BoundColumn();
// properties zetten
....

myDataGrid.Columns.Add (bc);

is dat toch ook @ runtime ? :?

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

@whoami
erhm.. erhm.....
't is vroeg O-) ; aardbeientheetijd dus... :P
Ik ook niet, het gaat namelijk om het toevoegen van de LinkButtons aan de ButtonColumn (die gemaakt is via de propertybuilder) aan de DataGrid via een DataTable die gebind wordt.... Het type van de overeenkomstige kolom in de DataTable heb ik Button gemaakt.
* gorgi_19 snapt er geen donder meer van eik wat je wilt...

[ Voor 92% gewijzigd door gorgi_19 op 26-02-2004 09:50 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • hwschuur
  • Registratie: April 2003
  • Laatst online: 07-11-2024
Een Button voeg je toe aan je grid, niet aan je datatable.
Jamaar die hele DataGrid wordt gebouwd (ingevuld) aan de hand van een DataTable. Alleen het aantal kolommen en de types van deze kolommen en de DataFields per kolom zijn gedefinieerd via de propertybuilder...

@gorgi: TemplatColumn. Hoe werkt dat? Waarom kan het wel via een TemplateColumn?? Kan ik die wel correct invullen met een DataTable?

-------------------
gorgi_19 snapt er geen donder meer van eik wat je wilt...
ARGH ;)

Komtie nog 1 keer:

- Ik heb een DataGrid. Hiervan zijn de kolommen en de namen daarvan en de dataFields daarvan gedefinieerd via de propertyBuilder. Zo ook de ButtonColumn (met LinkButtons, dat kun je ook opgeven in de propertybuilder).
- @ runtime wordt er een DataTable gemaakt met precies evenveel kolommen (en precies dezelfde types) als de DataGrid. Vervolgens worden er rijen gemaakt (zie ook code bovenin) waarna de DataTable gebind wordt aan de DataGrid.
- Het probleem is het toevoegen van LinkButtons aan deze DataTable.. Het type van de kolom van de DataTable waar de LinkButtons in horen te gaan komen heb ik dus Button gemaakt. Snap?

[ Voor 68% gewijzigd door hwschuur op 26-02-2004 09:55 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

AppleWatcher schreef op 26 februari 2004 @ 09:48:
@gorgi: TemplatColumn. Hoe werkt dat? Waarom kan het wel via een TemplateColumn?? Kan ik die wel correct invullen met een DataTable?
Al aangepast; bij nader inzien schaar ik mij bij whoami en snap niet wat een datatable voor directe relatie heeft met een datagrid en wat je voor elkaar probeert te krijgen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • hwschuur
  • Registratie: April 2003
  • Laatst online: 07-11-2024
gorgi_19 schreef op 26 februari 2004 @ 09:51:
[...]
..en snap niet wat een datatable voor directe relatie heeft met een datagrid en wat je voor elkaar probeert te krijgen.
Zie post erboven ;)

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
In een datatable stop je gegevens, geen controls.

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

- Het probleem is het toevoegen van LinkButtons aan deze DataTable.. Het type van de kolom van de DataTable waar de LinkButtons in horen te gaan komen heb ik dus Button gemaakt. Snap?
Nee, dat volg ik niet. Ga je een linkbutton serializen oid en in je datatable stoppen?
Je wilt dus gewoon de properties van DataTextfield en DataValueField vullen, oid?

[ Voor 13% gewijzigd door gorgi_19 op 26-02-2004 10:10 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • hwschuur
  • Registratie: April 2003
  • Laatst online: 07-11-2024
k ik heb het inmiddels opgelost door in de propertybuilder gewoon die knoppen aan te maken. @ runtime gebeurt nu niks met de knoppen, als je een knop aanklikt komt-ie nu in de selectedItemIndexChanged-methode.

Nu heb ik wel een nieuw probleem:

- Als ik nieuwe rijen toevoeg aan de dataTable en die bind met de DataGrid, dan krijg ik op elke rij een knop. Dat is logisch. Maar is het mogelijk om @ runtime (bij het maken van een nieuwe rij in de DataTable die dus gekoppeld wordt aan het DataGrid) aan te geven dat de knop voor die rij niet visible is, of dat je per rij aangeeft dat alle kolommen gespand worden naar 1 kolom?

[ Voor 7% gewijzigd door hwschuur op 26-02-2004 11:57 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
In de OnItemDataBound event van je datagrid kan je die knop onzichtbaar maken.
Je moet dan wel op de een of andere manier kunnen nagaan dat die rij een 'nieuwe' rij is.

bv:
code:
1
2
3
4
5
6
7
8
private void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
{
  if( ((DataRow)e.Item.DataItem)["TYPE"] == 1 )  // stel dat type aangeeft of 
                                                       // het een nieuwe row is
  {
      e.Item.Cells[0].Visible = false;
   }
}


edit:
hmmm, nee, dat gaat niet werken denk ik. ff testen...

[ Voor 63% gewijzigd door whoami op 26-02-2004 12:02 ]

https://fgheysels.github.io/


  • hwschuur
  • Registratie: April 2003
  • Laatst online: 07-11-2024
Hmmm het lijkt me de bedoeling dat-ie na het binden van de DataTable aan de DataGrid in die functie komt?? :?

Dat is namelijk helaas niet het geval :'(

edit: ff eventHandler koppelen nog!
edit2: het werkt ;)

>> Je kan dus alleen die .Item niet casten naar een DataRow.. Dus ff via DataGrid.SelectedIndex dan maar ;)

[ Voor 46% gewijzigd door hwschuur op 26-02-2004 23:47 ]

Pagina: 1