webForumDet fria alternativet

Sätta klientskript på CommandField-knapp

.NETur .NET

7 svar · 1 418 visningar · startad av ironhead

Medlem sedan mars 20011 346 inlägg
Frågan#1

Hej!

Jag har ett "CommandField" i min Gridview1 som håller en "Deleteknapp"...

<asp:CommandField ButtonType="Image" DeleteImageUrl="cancel.gif" />

...som jag skulle vilja lägga ett onclickevent på...

???.Attributes.Add("onclick","alert('delklick')")

Hur kommer jag åt deleteknapparna i Commandfield?

Medlem sedan maj 20012 812 inlägg
#2

Nu har jag inget CommandField utan ett ButtonField men så här kommer jag åt min Button i mitt ButtonField.

((Button)gridViewRowEventArgs.Row.Cells[3].Controls[0])

Det kanske du kan använda dig av för ditt commandfield, eller så får du gör om det till en buttonfield.

- M

Medlem sedan mars 20011 346 inlägg
#3

Gjorde såhär:

    Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) 
Handles GridView1.RowDataBound
        If (e.Row.RowType = DataControlRowType.DataRow) Then
            e.Row.Cells(0).Attributes.Add("onclick", "alert('delklick')")
        End If
    End Sub

då kommer man ju åt alla knappar i första kolumnen...kan man sedan urskilja delete-knappen?

Medlem sedan mars 20011 346 inlägg
#4

Kanske inte det snyggaste sättet, men fungerar...

    Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
Handles GridView1.RowDataBound
        If e.Row.RowType = DataControlRowType.DataRow Then
            Dim myTableCell As TableCell
            myTableCell = e.Row.Cells(0)
            Dim myDeleteButton As ImageButton
            myDeleteButton = myTableCell.Controls(2)
            myDeleteButton.Attributes.Add("onclick", "alert('delklick')")
        End If
    End Sub
Medlem sedan mars 20011 346 inlägg
#5

Förkortad version:

    Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
Handles GridView1.RowDataBound
        If (e.Row.RowType = DataControlRowType.DataRow) Then
            CType(e.Row.Cells(0).Controls(2), ImageButton).OnClientClick = "alert('delklick')"
        End If
    End Sub
Medlem sedan mars 20011 346 inlägg
#6

Kom på att detta var värdelöst, då jag trycker på edit-knappen, så sätts javascriptet även på avbryt-knappen i edit-läget. :(

Medlem sedan mars 20011 346 inlägg
#7

Mycket bättre, på rätt knapp..och endast rätt knapp, det görs en postback, men raderar inte raden...varför?

    Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
Handles GridView1.RowDataBound
        Dim row As GridViewRow = e.Row
        If row.RowType = DataControlRowType.DataRow Then
            Dim cell As TableCell = e.Row.Cells(0)
            For Each ctl As Control In cell.Controls
                If TypeOf ctl Is ImageButton Then
                    Dim link As ImageButton = CType(ctl, ImageButton)
                    If link.CommandName = "Delete" Then
                        link.ToolTip = "Radera"
                        link.Attributes("onclick") = "javascript:return " & _
                        "confirm('Are you sure you want to delete the selected record?')"
                    End If
                End If
            Next
        End If
    End Sub
Medlem sedan mars 20011 346 inlägg
#8

Tillslut så :)

    Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
Handles GridView1.RowDataBound
        Dim row As GridViewRow = e.Row
        If row.RowType = DataControlRowType.DataRow Then
            Dim cell As TableCell = e.Row.Cells(0)
            For Each ctl As Control In cell.Controls
                If TypeOf ctl Is ImageButton Then
                    Dim link As ImageButton = CType(ctl, ImageButton)
                    If link.CommandName = "Delete" Then
                        link.ToolTip = "Radera"
                        link.Attributes("onclick") = "if(confirm('Vill du verkligen radera...?')){" + 
ClientScript.GetPostBackEventReference(link, "") & "}else{return false;}"
                    End If
                End If
            Next
        End If
    End Sub
139 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)