18. december 2004 - 18:55Der er
2 kommentarer og 1 løsning
redigering Datagrid template
Hej
Jeg har lavet et datagrid hvor jeg bruger template for de enkelte kolonner.
Her har jeg bla. valgt at lave en template for select og her kunne jeg godt tænke mig at der skal være en knap til at selecte med på nogle af rækkerne, men ikke alle. De enkelte poster i databasen har en kolonne der hedder TypeID - Hvis denne typeID er 1 eller 4 så skal der ikke være nogen select knap (idet den kommando der efterfølgende kører ved SelectedIndexChanged vil melde fejl på poster med typeid=1 eller 4).
Er der nogen der kan hjælpe med hvordan jeg kan differentierer i en kolonnetemplate i et datagrid?
der er lidt forskellige muligheder, men det nemmeste for dig vil nok være at du abbonerer på datagriddet ItemDataBound-event, og bruger en kode i stil med nedenstående :
private void grid_ItemDataBound(object sender, DataGridItemEventArgs e) { // hvis det er almindelige datarækker if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { // findes typeid'et udfra datakilden int typeId = (int)((DataRowView)e.Item.DataItem)["TypeId"]; // hvis det er type 1 eller 4 if(typeId==1 || typeId==4) { // sørges der for, at knappen ikke vises ((LinkButton)e.Item.Cells[0].Controls[0]).Visible= false; } } }
ovenståden forudsætter : 1) At dit typeid findes i datakilden i kolonnen TypeId, og at det er en integertype. 2) At din selectknap er en linkbutton der vises i datagriddet første kolonne.
du spørger bare hvis der er noget du er i tvivl om, eller hvis du skal have en hånd med at modificere det til den måde du har sat dit grid op på.
Tak for dit svar - Det er lige det jeg skal bruge. (Har dog lige lavet det om til VB).
Kan ikke give dig point, er det fordi du kun har kommenteret? Du kan lige poste et svar, så skal jeg nok give dig point :-)
Et lille tip til den kode du har sendt er (Hvis der er andre der også har brug for dette)
If e.Item.ItemType <> ListItemType.Header And e.Item.ItemType <> ListItemType.Footer Then
istedet for den første if-sætning for ellers vil knapperne komme frem nogle steder hvor typeid = 1 eller 4 (faktisk hver gang at den efterfølgende poster har typeid=1 eller 4 hvor den forgående også havde det). Det skyldes at der er mange forskellige ItemTypes og med denne if-sætning kigger vi på dem alle på nær header og footer.
og jeps... det er rigtigt, at hvis du bruger den første jeg skrev, vil logikken ikke blive kørt ved SelectedItem eller EditItem - og du vil så få knapperne ind (uanset typeid), hvis du benytter dig af den slags i dit grid.
mvh
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.