2010-10-13 2 views
0

У меня есть две кнопок с разными командамиASP.NET Есть ли способ, чтобы добавить два «OnItemCommand» к моей осине: повторитель

<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> 

И мой ретранслятор имеет

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

Но мне нужно запустите SubmitDetails при нажатии этой кнопки и EditDetails при нажатии этой кнопки.

Любые идеи

Благодаря

Джейми

UPDATE

Мой повторитель

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

Мой Sub команды

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 

Есть ли что-то я делаю не так, как я получаю эту ошибку

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

Благодаря

Джейми

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 все мне нужно положить в

Благодаря

Джейми

+0

Да, вы не передаете параметры функции yuor 'EditDetails'. –

ответ

2

Попробуйте написать общий OnItemCommand обработчик события и решить, какой способ запустить основан на свойстве CommandName кнопки, которая была нажата.:

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

и установка ретранслятора тег:

<asp:Repeater id="dgBookings" runat="server" OnItemDataBound="ItemDB" OnItemCommand="itemCommand"> 
+0

Я адаптировал то, что вы мне дали, добавив 'sender, e' в скобки' EditDetails' Спасибо за помощь –

+0

Вместо отправки (отправителя, e) в методы, я бы, вероятно, передал только те значения, которые вам нужны в качестве параметров , это упрощает тестирование методов. –