views:

49

answers:

1

I have two button with different commands

<asp:LinkButton ID="lbEditDetails" Text="Edit..." runat="server" CommandName="EditDetails" CssClass="EditAdults" CommandArgument=<%# DataBinder.Eval(Container.DataItem, "number_slept") & "-" & DataBinder.Eval(Container.DataItem, "booking_ref")  %>></asp:LinkButton>

<asp:LinkButton ID="lbSubmitDetails" Text="Submit..." Visible="false" runat="server" CommandName="SubmitDetails" CssClass="SubmitAdults" CommandArgument=<%# DataBinder.Eval(Container.DataItem, "booking_ref")  %>></asp:LinkButton>

And my repeater has

<asp:Repeater id="dgBookings" runat="server" OnItemDataBound="ItemDB" OnItemCommand="EditDetails">

But i need to run SubmitDetails when that button is clicked and EditDetails when that button is clicked.

Any ideas

Thanks

Jamie

UPDATE

My repeater

<asp:Repeater id="dgBookings" runat="server" 
OnItemDataBound="ItemDB" OnItemCommand="ItemCommand">

My Sub commands

Sub ItemCommand(ByVal Sender as Object, ByVal e as RepeaterCommandEventArgs)

If e.CommandName = "EditDetails" Then
    EditDetails()   <---- This is where it's dying
Else If e.CommandName = "SubmitDetails" Then 
    SubmitDetails()
End If

End Sub

Sub EditDetails(ByVal Sender as Object, ByVal e as RepeaterCommandEventArgs)

Dim strPassedItems = e.CommandArgument

Dim strNumberSlept As String = e.CommandArgument.Split("-"C)(0)
Dim strPassedBookingRef As String = e.CommandArgument.Split("-"C)(1)

CType(e.Item.FindControl("ddlEditAdults"), dropdownlist).Visible = True
CType(e.Item.FindControl("ddlEditChildren"), dropdownlist).Visible = True

End Sub

Is there something i'm doing wrong as I'm getting this error

Argument not specified for parameter 'e' of 'Public Sub EditDetails(Sender As Object, e As System.Web.UI.WebControls.RepeaterCommandEventArgs)'.

Thanks

Jamie

UPDATE

Sub ItemCommand(ByVal Sender as Object, ByVal e as RepeaterCommandEventArgs)

If e.CommandName = "EditDetails" Then
    EditDetails(sender,e)
Else If e.CommandName = "SubmitDetails" Then 
    SubmitDetails()
End If

End Sub

sender,e was all i needed to put in.

Thanks

Jamie

+2  A: 

Try writing a general OnItemCommand event handler and deciding which method to run based on the CommandName property of the button that was clicked:

protected void itemCommand(object source, RepeaterCommandEventArgs e)
    {
        if (e.CommandName == "EditDetails")
        {
            EditDetails();
        }
        else if (e.CommandName == "SubmitDetails")
        {
            SubmitDetails();
        }
    }
}

and setting the repeater tag to:

<asp:Repeater id="dgBookings" runat="server" OnItemDataBound="ItemDB" OnItemCommand="itemCommand">  
ben f.
I adapted what you gave me by adding `sender,e` into the brackets of `EditDetails` Thanks for the help
Jamie Taylor
Instead of sending (sender, e) into the methods, I'd probably only pass the values you need as parameters, it makes the methods easier to test.
ben f.