2011-09-13 8 views
4

私はここで大きな問題があります。私は自分のサーバー側にjavascriptを追加することができましたが、問題は削除されていません。すべてのエラーを生成していdoesntのそれは私が開始する場所を知らない:GridView ImageButtonレコードの確認と削除

Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand 
    If e.CommandName = "cmdDelete" Then 
     Dim ID As Integer = Convert.ToInt32(e.CommandArgument) 
    End If 
End Sub 
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 l As ImageButton = DirectCast(e.Row.FindControl("ImageDelete"), ImageButton) 
     l.Attributes.Add("onclick", "javascript:return " & "confirm('Are you sure you want to delete this record " & DataBinder.Eval(e.Row.DataItem, "ID") & "')") 
    End If 
End Sub 

Protected Sub GridView1_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GridView1.RowDeleting 
    Dim ID As Integer = CInt(GridView1.DataKeys(e.RowIndex).Value) 
    'dim ID as Integer 
    con.Open() 
    'gridview1.rows(e.rowindex).cells(0) 
    Dim cmd As New SqlCommand("delete from [tblUser] where [ID][email protected]", con) 
    cmd.Parameters.AddWithValue("@ID", ID) 
    cmd.ExecuteNonQuery() 
    con.Close() 
End Sub 

クライアント側ImageDeleteボタンが押され

 <asp:TemplateField HeaderText="Delete"> 
    <ItemTemplate> 
     <asp:ImageButton ID="ImageDelete" ImageUrl="" runat="server" CommandName="cmdDelete" CommandArgument='<%# Eval("ID") %>' 
    /> 
    </ItemTemplate> 
    </asp:TemplateField> 
    </Columns 
+1

あなたはjavascriptの確認メッセージを見ていますか?そして、yes/okを押すとRowCommandイベントが発生しますか? – Waqas

答えて

1

をGridViewにIDをデータキーとして追加するかどうかを指定します。

<asp:GridView ID="GridView1" runat="server" DataKeyNames="ID" ...> 

そして、私はあなたが削除ロジックでIDを取得している方法に問題があるかもしれないと思う:

Dim ID As Integer = Convert.ToInt32(GridView1.DataKeys(e.RowIndex)("ID")) 
2

RowCommandイベントが発生します。ただし、RowCommandのイベントハンドラでは、何も削除しません。一方、RowDeletingイベントは、このイベントの正しいコマンドがcmdDeleteではなくDeleteであるため、まったく発生しません。

これには2つの修正があります。まず - RowCommandイベントハンドラに削除操作のためにあなたのコードを移動:

Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand 
    If e.CommandName = "cmdDelete" Then 
     Dim ID As Integer = Convert.ToInt32(e.CommandArgument) 

     con.Open() 
     Dim cmd As New SqlCommand("delete from [tblUser] where [ID][email protected]", con) 
     cmd.Parameters.AddWithValue("@ID", ID) 
     cmd.ExecuteNonQuery() 
     con.Close() 

    End If 
End Sub 

セカンド - コマンド名を変更したり、すでに実装RowDeletingハンドラを使用:あなたのマークアップには示していない

<asp:ImageButton ID="ImageDelete" ImageUrl="" runat="server" CommandName="Delete" CommandArgument='<%# Eval("ID") %>' /> 
+0

私が何をしたのかは、クライアントサイドでを追加して動作します。 – Janwel

+0

@Janwel、実際に説明した問題のもう一つの可能​​な修正です。 'CommandField'のDeleteボタンはサーバに' Delete'コマンドを送るだけで 'RowDeleting'イベントが発生します。そういうわけで、それは機能します。 – Andrei

+0

ありがとうたくさんの先生 – Janwel

関連する問題