powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как обработать событие Click в asp:button
10 сообщений из 10, страница 1 из 1
Как обработать событие Click в asp:button
    #34075378
comachi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не получается перехватить событие click или command для asp:button расположенного в юзер контроле? По форуму были намеки на использование RaiseEvent - если так то как использовать? Help плиз :(
...
Рейтинг: 0 / 0
Как обработать событие Click в asp:button
    #34075567
Dimon aka Manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Эт как это не получается? А ну ка код в студию.

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
Как обработать событие Click в asp:button
    #34089209
comachi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собственно ascx файл в котором нужно отработать нажатие на кнопку Сохранить:
Imports ATK.myFunction
Imports System.Web.UI.WebControls
Namespace ATK
    Partial Class InsrtFrm
        Inherits System.Web.UI.UserControl
        Private _News_ID As Integer
        Private _Text As String
        Private _CreateDate As String
        Private _EnblStat As Boolean
        Private _FrmStat As Integer
        Private _EnterStat As Integer
        Public WriteOnly Property News_ID() As Integer 'ID Записи
            Set(ByVal Value As Integer)
                _News_ID = Value
            End Set
        End Property
        Public WriteOnly Property Text() As String 'HTML текст новости
            Set(ByVal value As String)
                _Text = value
            End Set
        End Property
        Public WriteOnly Property CreateDate() As String 'Дата создания записи
            Set(ByVal value As String)
                _CreateDate = value
            End Set
        End Property
        Public WriteOnly Property EnblStat() As Boolean 'Статус видимости записи
            Set(ByVal value As Boolean)
                _EnblStat = value
            End Set
        End Property
        Public WriteOnly Property FrmStat() As Integer 'Статус формы редактирования
            Set(ByVal Value As Integer)
                _FrmStat = Value '1 - /Сохранить/, иное /Добавить/
            End Set
        End Property
        Sub EdtBtnEvnt(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.CommandEventArgs)
            Response.Write("efdefwefew")
        End Sub
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            News_ID_.Text = _News_ID
            EnblStat_.Checked = _EnblStat
            CreateDate_.Text = _CreateDate
            Text_.Text = _Text
            Dim ControlSave As New Button
            CmdBtn.Controls.AddAt(0, ControlSave)
            AddHandler ControlSave.Command, AddressOf EdtBtnEvnt
            If _FrmStat = 1 Then
                ControlSave.Text = "Сохранить"
            Else
                ControlSave.Text = "Добавить"
            End If
        End Sub
    End Class
End Namespace

Я так понимаю что объект уничтожается раньше чем дело доходит до обработки каких либо событий которые в нем происходили. Дополняю вопрос - как обработать эти постсобытия. И следует ли их обработать непосредственно в объекте или же в материнском контроле из которого следует вызов данного контрола?
...
Рейтинг: 0 / 0
Как обработать событие Click в asp:button
    #34089539
comachi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Более менее разобрался с происходящим но остаются вопросы:
В подгружаемом к странице контроле объявляю событие:
Public Event SaveClick(ByVal Id As Integer)
Затем в событии нажатия кнопки описываю:
Protected Sub Save_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Save.Click
RaiseEvent SaveClick(20)
End Sub

В материнском контроле описываю:
Private WithEvents objWindow As ATK.InsrtFrm

И конечно обработчик события:
Private Sub objWindow_SaveClick(ByVal Id As Integer)
Response.Write("ljfslkjfl")
End Sub

Все замечательно компилится но не работает, почему?
...
Рейтинг: 0 / 0
Как обработать событие Click в asp:button
    #34092360
han-bratan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты контрол динамически подгружаешь? Если да то проблема именно в этом. Там кажись проблема в том что когда ты нажимаешь на Save то идет PostBack, перегружается страница, в ней соответственно грузится твой контрол но новый... события твоего уже как бы нету то кнопки Save... Копай в этом направлении.
...
Рейтинг: 0 / 0
Как обработать событие Click в asp:button
    #34092527
gaidar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто добавь обработчик события для контрола.
Вот, например, статья в Microsoft KB.--
Гайдар Магдануров
E-Mail | Блог | Сайт

Difficult I do now, impossible will take a while...
...
Рейтинг: 0 / 0
Как обработать событие Click в asp:button
    #34092649
comachi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ты не туда меня указал - там в статье рассказано как добавить контрол динамически а у меня с добавлением контрола проблем нет. У меня такая проблема что в aspx файле загружается UserControl_1 а в нем иницируется загрузка UserControl_2 так вот когда в UserControl_2 происходит событие нажатия на кнопку то не получается обработать этот момент. Сейчас попытаюсь образно показать:

Это код загружающий контрол SelectNews.ascxImports ATK.myFunction
Imports System.Data.SqlClient
Imports System.Web.UI.WebControls

Namespace ATK
Partial Class SelectNewsGrand
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim myReader As SqlDataReader = LoadMultiData("SlctNews", True)
Dim objWindow As SelectNews = LoadControl("~/Admin/News/SelectNews.ascx")
objWindow.ID = "SlctNewsData"
objWindow.SlctDataReader = myReader 'передать отобранную инфо
SlctNews.Controls.Add(objWindow)
End Sub
End Class
End Namespace


Это сам контрол SelectNews.ascxImports System.Data.SqlClient
Imports ATK.myFunction

Namespace ATK
Partial Class SelectNews
Inherits System.Web.UI.UserControl
Public WithEvents perpety As InsrtFrm

Private _SlctDataReader As SqlDataReader

Public WriteOnly Property SlctDataReader() As SqlDataReader 'Цвет окна
Set(ByVal Value As SqlDataReader)
_SlctDataReader = Value
End Set
End Property

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Do While (_SlctDataReader.Read())
Dim Row As New TableRow
Dim Loops As Integer
Dim EdtCellsLoop As Integer
Dim TitleTxt() As String = {"Удалить", "Редактировать", "Ниже", "Выше"}
Dim EdtFileNames() As String = {"Delete", "Edit", "Down", "Up"}
'Создать колонки и строки с данными
For Loops = 0 To _SlctDataReader.FieldCount - 1
Dim Cell As New TableCell
Cell.Text = _SlctDataReader.GetSqlValue(Loops).ToString
Cell.VerticalAlign = VerticalAlign.Top
Row.Cells.Add(Cell)
'Response.Write(String.Concat(_SlctDataReader.GetSqlValue(0).ToString, "/"))
'Response.Write(String.Concat("<", _SlctDataReader.GetSqlValue(1).ToString, ">"))
'Как узнать размер переменной

Next
'Добавить колонки с управляющими кнопками
For EdtCellsLoop = 0 To 3
Dim Cell As New TableCell
Dim myEdtImg As New ImageButton
myEdtImg.ImageUrl = String.Concat("~/img/Admin/", EdtFileNames(EdtCellsLoop), ".gif")
myEdtImg.ToolTip = TitleTxt(EdtCellsLoop)
Cell.Controls.Add(myEdtImg)
Cell.VerticalAlign = VerticalAlign.Top
myEdtImg.CommandArgument = _SlctDataReader.GetSqlValue(0).ToString
myEdtImg.CommandName = EdtFileNames(EdtCellsLoop)
AddHandler myEdtImg.Command, AddressOf EdtBtnEvnt
Row.Cells.Add(Cell)
Next
SlctData.Rows.Add(Row)
Loop
_SlctDataReader.Close()
End Sub

Sub EdtBtnEvnt(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.CommandEventArgs)
Select Case e.CommandName
Case "Delete"
Case "Edit"
Dim objWindow As InsrtFrm = LoadControl("~/Admin/News/InsrtFrm.ascx")
Dim TmpReader As SqlDataReader = LoadData(e.CommandArgument, "News_ID", "News", True)
Do While (TmpReader.Read())
objWindow.News_ID = TmpReader.GetSqlValue(0).ToString
objWindow.FrmStat = 1 'Форма для Редактирования
objWindow.EnblStat = TmpReader.GetSqlValue(3).ToString
objWindow.Text = TmpReader.GetSqlValue(1).ToString
objWindow.CreateDate = TmpReader.GetSqlValue(2).ToString
Loop
TmpReader.Close()
InsertFrm.Controls.Add(objWindow)
Case "Down"
Case "Up"
End Select
End Sub
Private Sub perpety_SaveClick(ByVal Id As Integer)
Response.Write("ljfslkjfl")
End Sub
End Class
End Namespace
 
А ниже описание контрола InsrtFrm.ascx который подгружается описанным выше контролом SelectNews.ascx:Imports ATK.myFunction

Namespace ATK
Partial Class InsrtFrm
Inherits System.Web.UI.UserControl
Public Event SaveClick(ByVal Id As Integer)

Private _News_ID As Integer
Private _Text As String
Private _CreateDate As String
Private _EnblStat As Boolean
Private _FrmStat As Integer
Private _EnterStat As Integer

Public WriteOnly Property News_ID() As Integer 'ID Записи
Set(ByVal Value As Integer)
_News_ID = Value
End Set
End Property

Public WriteOnly Property Text() As String 'HTML текст новости
Set(ByVal value As String)
_Text = value
End Set
End Property

Public WriteOnly Property CreateDate() As String 'Дата создания записи
Set(ByVal value As String)
_CreateDate = value
End Set
End Property

Public WriteOnly Property EnblStat() As Boolean 'Статус видимости записи
Set(ByVal value As Boolean)
_EnblStat = value
End Set
End Property

Public WriteOnly Property FrmStat() As Integer 'Статус формы редактирования
Set(ByVal Value As Integer)
_FrmStat = Value '1 - /Сохранить/, иное /Добавить/
End Set
End Property

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
News_ID_.Text = _News_ID
EnblStat_.Checked = _EnblStat
CreateDate_.Text = _CreateDate
Text_.Text = _Text
If _FrmStat = 1 Then
Save.Text = "Сохранить"
Else
Save.Text = "Добавить"
End If

End Sub

Protected Sub Save_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Save.Click
RaiseEvent SaveClick(20)
End Sub
End Class
End Namespace

 
Все работает прекрасно за исключением того что мне не удается перехватить и обработать события в контроле InsrtFrm.ascx - причина кроется где-то совсем рядом, только я ее не вижу!
...
Рейтинг: 0 / 0
Как обработать событие Click в asp:button
    #34092650
comachi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Согласен с тобой здесь нужно обработать пост-событие с помощью контрукции RaiseEvent - но не получается! Но почему? см. комменты ниже :(
...
Рейтинг: 0 / 0
Как обработать событие Click в asp:button
    #34092690
Dimon aka Manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй перенести добавление контролов в Page_Init. Возможно из-за вложенности не поднимается ViewState для них.

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
Как обработать событие Click в asp:button
    #34095709
comachi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не не работает! Все так же! Вообще по логике вещей контролы должны добавляться в Page_Init или Page_Load и если я добавляю контролы то быть может загрузить их а потом типа Visible=True - и дело с концом, но ради спортивного интереса хочется крассиво :)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как обработать событие Click в asp:button
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]