Кнопка ClickEvent не срабатывает

День Все,

У меня есть две кнопки на моей веб-странице, которые используются для блокировки и разблокировки веб-страницы, чтобы пользователь мог заблокировать страницу и редактировать ее, чтобы другие пользователи не могли получить доступ к записи, а затем разблокировать эту запись, чтобы другие пользователи могли ее редактировать.

У меня проблема в том, что кнопки не работают, и я не уверен, почему. Я использую кнопки изображения, но похоже, что событие не запускается, я не вижу проблемы, и это сводит меня с ума. Может кто-нибудь, пожалуйста, взгляните на мой код...

   <asp:ImageButton ID="btnLock" runat="Server" 
       AlternateText="Click to lock record" ImageUrl="~/images/lock.png" />


   <asp:ImageButton ID="btnUnlock" runat="Server" 
       AlternateText="Click to unlock record" ImageUrl="~/images/unlock.png" />

   <asp:Label ID="lblUserName" runat="server" Font-Bold="True" Font-Size="Medium" 
            ForeColor="#CC3300"></asp:Label>
        <asp:HiddenField ID="hdnIsLockedBy" runat="server" />


 'VB Code for lock button...
  Protected Sub btnLock_Click(sender As Object, e As System.EventArgs) Handles btnLock.Click

    Dim lock As New WeeklyClass

    'Check that the Loggedby field is set to null so the user can then lock the record
    If String.IsNullOrEmpty(lock.LockedBy) Then
        'lock and add the username
        lock.LockedBy = User.Identity.Name
        'global variable islockedby
        hdnIsLockedBy.Value = User.Identity.Name
        'AgendaID required as part of the stored procedure 
        lock.AgendaID = Integer.Parse(lblAgendaNumber.Text)


    End If
    'Save to the database using the Class DAL and the Stored Procedure
    WeeklyClassDAL.LockWeeklyAgenda(lock)

    'Display buttons as expected result
    btnLock.Visible = False
    btnUnlock.Visible = True

    ' Refreshes fields on the page
    Response.Redirect("~/WeeklyAgenda.aspx?Edit=" & lblAgendaNumber.Text)

End Sub

  'VB Code for unlock button...
   Protected Sub btnUnlock_Click(sender As Object, e As System.EventArgs) Handles btnUnlock.Click

    Dim unlock As New WeeklyClass

    ' Check to see if the system has a username
    If hdnIsLockedBy.Value = User.Identity.Name Then
        'set the lockedby field to null
        unlock.LockedBy = hdnIsLockedBy.Value
        'pass the relevent agendaid
        unlock.AgendaID = Integer.Parse(lblAgendaNumber.Text)
    End If


    ' save to the database using the Class DAL
    WeeklyClassDAL.unLockWeeklyAgenda(unlock)

    'Display buttons as expected result
    btnLock.Visible = True
    btnUnlock.Visible = False

    ' Refreshes fields on the page
    Response.Redirect("~/WeeklyAgenda.aspx?Edit=" & lblAgendaNumber.Text)

End Sub

Любая помощь очень приветствуется. Я смотрю на это целую вечность и не могу найти проблему.

С уважением Бетти


person Betty B    schedule 19.09.2012    source источник
comment
Попробуйте переименовать свой вопрос. Это вообще не имеет смысла.   -  person Tim Schmelter    schedule 19.09.2012


Ответы (3)


Вы не подписались на событие клика. Ваш элемент управления не знает, что он должен вызывать эти функции, когда пользователь щелкает их.

Подпишитесь на эти события следующим образом:

<asp:ImageButton ID="btnLock" runat="Server" 
       AlternateText="Click to lock record" ImageUrl="~/images/lock.png"  
       OnClick="btnLock_Click" />


   <asp:ImageButton ID="btnUnlock" runat="Server" 
       AlternateText="Click to unlock record" ImageUrl="~/images/unlock.png"            
       OnClick="btnUnloc_Click />
person nunespascal    schedule 19.09.2012

Вам нужно указать событие Click в ваших кнопках.

OnClick="Button1_Click"

Итак, ваши кнопки должны быть:

<asp:ImageButton 
            ID="btnLock" 
            runat="Server" 
            AlternateText="Click to lock record" 
            ImageUrl="~/images/lock.png" 
            OnClick="btnLock_Click" />

<asp:ImageButton 
           ID="btnUnlock" 
           runat="Server" 
           AlternateText="Click to unlock record" 
           ImageUrl="~/images/unlock.png" 
           OnClick="btnUnloc_Click />
person Habib    schedule 19.09.2012

К кнопкам нужно добавить autopostback="true":

<asp:ImageButton ID="btnLock" runat="Server" autopostback="true"
       AlternateText="Click to lock record" ImageUrl="~/images/lock.png" />

В противном случае код позади не будет запущен.

person Ryan McDonough    schedule 19.09.2012
comment
После этого OP нужно указать OnClick=MethodName без прослушивателя событий, который ответит на событие? - person ; 19.09.2012
comment
@DarshanJoshi ASP.net перехватит событие в отправителе как объект, e как System.EventArgs. Не нужно указывать на кнопке каждое событие, если вы используете обратную передачу. - person Ryan McDonough; 19.09.2012
comment
Также это означает, что вы можете добавлять события во внутренний код без необходимости каждый раз менять передний код, если вы используете обратную передачу. - person Ryan McDonough; 19.09.2012
comment
Если да, то какая часть кода в отделенном коде перехватит событие? Значит какой метод ответит? - person ; 19.09.2012
comment
Какое бы событие ни проходило, если кто-то нажмет кнопку с включенной обратной передачей, тогда сработает даже _click. обратная передача передает события вокруг. - person Ryan McDonough; 19.09.2012