|
-
Nov 28th, 2003, 04:21 PM
#1
Thread Starter
Junior Member
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.
-
Nov 28th, 2003, 06:45 PM
#2
Hyperactive Member
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:
<%@ Import Namespace="System.Data" %>
<script language="vb" runat="server">
Private Sub bindGrid()
dgSample.DataSource = createData()
dgSample.DataBind()
End Sub
Private Function createData() As DataTable
Dim dt As New DataTable()
dt.Columns.Add(New DataColumn("ID"))
dt.Columns.Add(New DataColumn("LastName"))
dt.Columns.Add(New DataColumn("FirstName"))
addRow(dt, 1, "Smith", "Bob")
addRow(dt, 2, "Carter", "Chris")
Return dt
End Function
Private Sub addRow(ByRef target As DataTable, ByVal id As Integer, ByVal lastName As String, ByVal firstName As String)
Dim dr As DataRow = target.NewRow()
dr("ID") = id
dr("LastName") = lastName
dr("FirstName") = firstName
target.Rows.Add(dr)
End Sub
Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
If Not Page.IsPostBack Then
bindGrid()
End If
End Sub
Protected Sub dgSample_ItemCreated(ByVal sender As Object, ByVal e As DataGridItemEventArgs)
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
Dim lbtnDelete As LinkButton
lbtnDelete = CType(e.Item.FindControl("lbtnDelete"), System.Web.UI.WebControls.LinkButton)
If Not lbtnDelete Is Nothing Then
lbtnDelete.Attributes.Add("onclick", "return confirmDelete();")
End If
End If
End Sub
Protected Sub dgSample_ItemCommand(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
Dim id As Integer = dgSample.DataKeys(e.Item.ItemIndex)
Dim itemIndex As Integer = -1
Select e.CommandName.ToLower()
Case "edit":
itemIndex = e.Item.ItemIndex
Case "save":
Response.Write(String.Format("Saving: {0}", id))
Case "delete":
Response.Write(String.Format("Deleting: {0}", id))
End Select
dgSample.EditItemIndex = itemIndex
bindGrid()
End Sub
</script>
<html>
<head>
<script language="javascript">
function confirmDelete()
{
return window.confirm("Are you sure you want to delete this item?");
}
</script>
</head>
<body>
<form runat="server">
<asp:DataGrid ID="dgSample" Runat="server" AutoGenerateColumns="False" DataKeyField="ID"
OnItemCreated="dgSample_ItemCreated" OnItemCommand="dgSample_ItemCommand">
<Columns>
<asp:BoundColumn DataField="LastName" HeaderText="Last Name"/>
<asp:BoundColumn DataField="FirstName" HeaderText="First Name"/>
<asp:TemplateColumn>
<ItemTemplate>
<asp:LinkButton ID="lbtnEdit" Runat="server" CommandName="Edit" Text="Edit"/>
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton ID="lbtnSave" Runat="server" CommandName="Save" Text="Save"/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<ItemTemplate>
<asp:LinkButton ID="lbtnDelete" Runat="server" CommandName="Delete" Text="Delete"/>
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton ID="lbtnCancel" Runat="server" CommandName="Cancel" Text="Cancel"/>
</EditItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
</form>
</body>
</html>
-
Nov 29th, 2003, 01:45 PM
#3
Thread Starter
Junior Member
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
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|