23. januar 2004 - 15:17Der er
8 kommentarer og 1 løsning
Adresse på linkbutton i datagrid
Jeg har et datagrid med en kolonne hvor jeg har to linkbutton i samme kolonne se HTML: <Columns> <ItemTemplate> <asp:LinkButton CommandName="Edit" Text="Ret" runat="server" /> <asp:LinkButton CommandName="Delete" Text="Delete" runat="server" /> </ItemTemplate> </Columns>
Mit problem er at finde adressen på deleteButton, idet nedenstående syntaks giver mig editButton.
Dim deleteButton as LinkButton = e.Item.Cells(5).Controls(1)
Jeg har prøvet med Controls(2), men det giver fejl
Jeg har slået trace til, men bliver ikke meget klogere. Jeg har mine 2 controls i celle 5, for jeg får som nævnt udført det jeg ønsker, men ikke når jeg trykker på Delete, men i stedet når jeg trykker på Edit. Jeg forstår simpelthen ikke at jeg ikke kan adresse den anden control i cellen via
Dim deletebutton as LinkButton = e.Item.Cells(5).Controls(1)
Forslag er der mange af, men har lidt svært ved at forstå dit problem?
Hvis du vil sætte "onclick" på din sletteknap kan du tilføje følgende eventhandler:
Public Sub dgCuac_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgCuac.ItemDataBoundSelect Case e.Item.ItemType Case ListItemType.Item, ListItemType.AlternatingItem CType(e.Item.FindControl("lbtnDelete"), LinkButton).Attributes.Add("onclick", "java script:return noticeDelete();") End Select End Sub
og i din .aspx fil tilføje følgende javascript funktion: function noticeDelete() { return (confirm("Vil du slette den valgte post?")) }
Vil du opfange tryk på Deleteknappen kan du tilføje følgende eventhandler:
Private Sub dgCuac_ItemCommand(ByVal source As System.Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgCuac.ItemCommand Select Case e.ItemCommand Case "Delete" CType(e.Item.FindControl("lbtnDelete"),LinkButton).Text = "Got me.." Case "Edit" ' Gør et eller andet End Select End Sub
Delete, Edit og Update kommandoer kan også "fanges" i deres egne eventhandlere.
Som jettes skriver er det altså en ret god ide, hvis alle dine kontroller tildeles et Id.
thrytter jeg kan godt se ideen med dit forslag, men er ikke så stiv i aspx, så jeg har ikke fået det til at virke.
Min sub ser således ud, og virker godt nok, problemet er bare at den fanger den Control der står først i kolonnen, jeg har 2 Controller i samme kolonne, i det her tilfælde Edit. se HTML:
Sub dgEmner_ItemDataBound(sender As Object, e As DataGridItemEventArgs)
If e.Item.ItemType <> ListItemType.Header AND _ e.Item.ItemType <> ListItemType.Footer then
Dim deletebutton as LinkButton = e.Item.Cells(5).Controls(1) deletebutton.Attributes("onclick") = "java script:return confirm('Du sletter nu emne " & _ DataBinder.Eval(e.Item.DataItem, "emneID") & "?')"
End If
End Sub
Jeg kan løse problemet ved at flytte delete foran edit kolonnen, men det er ikke optimalt, så hvis du (thrytter) kan implementere din løsning i min er der point.
Efter lidt forsøg frem og tilbage har jeg løst det
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.