Results 1 to 3 of 3

Thread: delete confirm not working...

  1. #1

    Thread Starter
    Junior Member
    Join Date
    Aug 2003
    Location
    Weston, FL USA
    Posts
    17

    delete confirm not working...

    I know this question has been asked several different times and ways, but even after checking out the answers to these questions and the aspalliance article on how to perform a delete confirm, I'm still having a problem and I just can't figure it out.......

    All I'm trying to do is to set up a delete confirm for a row in my datagrid. The confirm pops up ok, but the delete functionality never takes place. After I respond to delete the row, the page_load event fires again (which I expect), but no other event fires after that......

    Here is a snippet from my html:


    <asp:TemplateColumn HeaderText="Inactivate Member">

    <ItemTemplate>

    <asp:Button id="cmdDelete" runat="server" Text="Inactivate" CommandName="Delete" CausesValidation="false"></asp:Button>

    </ItemTemplate>

    </asp:TemplateColumn>




    The following is the delete confirm function in my html:


    <script>

    function getdelconfirm()

    {

    if (confirm("Are you sure you want to inactivate this member?")==true)

    return true;

    else

    return false;

    }

    </script>




    The following is the code in my page_load event:


    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load



    Try

    If Not IsPostBack Then

    If Not Request.QueryString.Item("strMsg") Is Nothing Then 'Capture success msg from child screen

    Response.Write("<script>alert('" & Request.QueryString.Item("strMsg") & "');</script>")

    End If

    'Initialize Viewstate variables

    lblWelcome.Text = "Welcome " & HttpContext.Current.User.Identity.Name & ". Today is " & FormatDateTime(Now, DateFormat.GeneralDate)

    LoadMembers()

    End If

    DsNCVAC1 = Cache.Get("Category")

    dvMembers = DsNCVAC1.Membership.DefaultView

    DataGrid1.DataSource = dvMembers

    DataGrid1.DataBind()

    Catch exException As InvalidCastException 'Used for session timeout

    Server.Transfer("..\..\Default.aspx")

    Catch exException As ThreadAbortException

    'Technically, Server.Transfer or Response.Redirect throws an exception. Catch it here and ignore it.

    End Try



    End Sub




    The following is the code in my itemdatabound event:




    Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound



    Dim strQueryString As String



    If (e.Item.ItemType = ListItemType.Item) Or (e.Item.ItemType = ListItemType.AlternatingItem) Then

    Dim hylUserID As HyperLink = CType(e.Item.FindControl("hylUserID"), HyperLink)

    Dim txtFirstName As Label = CType(e.Item.FindControl("txtFirstName"), Label)

    Dim txtLastName As Label = CType(e.Item.FindControl("txtLastName"), Label)

    strQueryString = String.Empty

    strQueryString = "?MemberID=" & DataGrid1.DataKeys(e.Item.ItemIndex) & "&FirstName=" & txtFirstName.Text & "&LastName=" & txtLastName.Text & "&AddMember=" & False

    hylUserID.NavigateUrl = "MemberAdminEdit.aspx" & strQueryString

    End If



    End Sub




    The following is the code from my itemcreated event:




    Private Sub DataGrid1_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemCreated



    If (e.Item.ItemType = ListItemType.Item) Or (e.Item.ItemType = ListItemType.AlternatingItem) Then

    Dim btnButton As Button

    btnButton = CType(e.Item.Cells(6).FindControl("cmdDelete"), Button)

    btnButton.Attributes.Add("onclick", "return getdelconfirm();")

    End If



    End Sub




    The following is the start of some code from my datagrid1_deletecommand event:




    Public Sub DataGrid1_DeleteCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.DeleteCommand

    .

    .

    .




    The following is the start of the code from my itemcommand event:


    Private Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.ItemCommand



    If e.CommandName = "Delete" Then

    .

    .

    .




    I have both the itemcommand and deletecommand events in here, because I was trying out several different methods. The problem is, like I said before, that none of the above events fire after the page_load event is fired when I press ok on the popup confirmation.

    What do I need to do in order to have the appropriate event fire after the page_load event fires when I respond ok to the confirm in order to perform the delete functionality?
    Thanks,

    Bill Yeager (BCIP, MCP)
    BrainBench Certified Internet Professional
    Microsoft Certified Professional
    YeagerTech Consulting, Inc.

  2. #2
    Hyperactive Member
    Join Date
    Aug 2002
    Location
    Fort Collins, CO
    Posts
    366
    Not sure how you're hooking up the datagrid events for the ItemCommand, you need either OnItemCommand=YourDataGrid_ItemCommandEventHandler or OnDeleteCommand=YourDataGrid_DeleteCommandEventHandler in your datagrid declaration.

    Here's how I'd do the confirm delete:
    VB Code:
    1. <%@ Import Namespace="System.Data" %>
    2. <script language="vb" runat="server">
    3. Private Sub bindGrid()
    4.     dgSample.DataSource = createData()
    5.     dgSample.DataBind()
    6. End Sub
    7. Private Function createData() As DataTable
    8.     Dim dt As New DataTable()
    9.     dt.Columns.Add(New DataColumn("ID"))
    10.     dt.Columns.Add(New DataColumn("LastName"))
    11.     dt.Columns.Add(New DataColumn("FirstName"))
    12.     addRow(dt, 1, "Smith", "Bob")
    13.     addRow(dt, 2, "Carter", "Chris")
    14.     Return dt
    15. End Function
    16.  
    17. Private Sub addRow(ByRef target As DataTable, ByVal id As Integer, ByVal lastName As String, ByVal firstName As String)
    18.     Dim dr As DataRow = target.NewRow()
    19.     dr("ID") = id
    20.     dr("LastName") = lastName
    21.     dr("FirstName") = firstName
    22.     target.Rows.Add(dr)
    23. End Sub
    24.  
    25. Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
    26.     If Not Page.IsPostBack Then
    27.         bindGrid()
    28.     End If
    29. End Sub
    30.  
    31. Protected Sub dgSample_ItemCreated(ByVal sender As Object, ByVal e As DataGridItemEventArgs)
    32.     If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
    33.         Dim lbtnDelete As LinkButton
    34.         lbtnDelete = CType(e.Item.FindControl("lbtnDelete"), System.Web.UI.WebControls.LinkButton)
    35.         If Not lbtnDelete Is Nothing Then
    36.             lbtnDelete.Attributes.Add("onclick", "return confirmDelete();")
    37.         End If
    38.     End If
    39. End Sub
    40.  
    41. Protected Sub dgSample_ItemCommand(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
    42.     Dim id As Integer = dgSample.DataKeys(e.Item.ItemIndex)
    43.     Dim itemIndex As Integer = -1
    44.     Select e.CommandName.ToLower()
    45.         Case "edit":
    46.             itemIndex = e.Item.ItemIndex
    47.         Case "save":
    48.             Response.Write(String.Format("Saving: {0}", id))
    49.         Case "delete":
    50.             Response.Write(String.Format("Deleting: {0}", id))     
    51.     End Select
    52.     dgSample.EditItemIndex = itemIndex
    53.     bindGrid()
    54. End Sub
    55. </script>
    56. <html>
    57.     <head>
    58.         <script language="javascript">
    59.         function confirmDelete()
    60.         {
    61.             return window.confirm("Are you sure you want to delete this item?");
    62.         }
    63.         </script>
    64.     </head>
    65.     <body>
    66.         <form runat="server">
    67.             <asp:DataGrid ID="dgSample" Runat="server" AutoGenerateColumns="False" DataKeyField="ID"
    68.                 OnItemCreated="dgSample_ItemCreated" OnItemCommand="dgSample_ItemCommand">
    69.                 <Columns>
    70.                     <asp:BoundColumn DataField="LastName" HeaderText="Last Name"/>
    71.                     <asp:BoundColumn DataField="FirstName" HeaderText="First Name"/>
    72.                     <asp:TemplateColumn>
    73.                         <ItemTemplate>
    74.                             <asp:LinkButton ID="lbtnEdit" Runat="server" CommandName="Edit" Text="Edit"/>
    75.                         </ItemTemplate>
    76.                         <EditItemTemplate>
    77.                             <asp:LinkButton ID="lbtnSave" Runat="server" CommandName="Save" Text="Save"/>
    78.                         </EditItemTemplate>
    79.                     </asp:TemplateColumn>
    80.                     <asp:TemplateColumn>
    81.                         <ItemTemplate>
    82.                             <asp:LinkButton ID="lbtnDelete" Runat="server" CommandName="Delete" Text="Delete"/>
    83.                         </ItemTemplate>
    84.                         <EditItemTemplate>
    85.                             <asp:LinkButton ID="lbtnCancel" Runat="server" CommandName="Cancel" Text="Cancel"/>
    86.                         </EditItemTemplate>
    87.                     </asp:TemplateColumn>
    88.                 </Columns>
    89.             </asp:DataGrid>
    90.         </form>
    91.     </body>
    92. </html>

  3. #3

    Thread Starter
    Junior Member
    Join Date
    Aug 2003
    Location
    Weston, FL USA
    Posts
    17
    pvb, I was rebinding the grid on a postback which was not executing the associated handler for the delete button........
    Thanks,

    Bill Yeager (BCIP, MCP)
    BrainBench Certified Internet Professional
    Microsoft Certified Professional
    YeagerTech Consulting, Inc.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width