Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как обработать событие Click в asp:button
|
|||
|---|---|---|---|
|
#18+
Не получается перехватить событие click или command для asp:button расположенного в юзер контроле? По форуму были намеки на использование RaiseEvent - если так то как использовать? Help плиз :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 21:51 |
|
||
|
Как обработать событие Click в asp:button
|
|||
|---|---|---|---|
|
#18+
Эт как это не получается? А ну ка код в студию. Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2006, 02:26 |
|
||
|
Как обработать событие Click в asp:button
|
|||
|---|---|---|---|
|
#18+
Собственно 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 Я так понимаю что объект уничтожается раньше чем дело доходит до обработки каких либо событий которые в нем происходили. Дополняю вопрос - как обработать эти постсобытия. И следует ли их обработать непосредственно в объекте или же в материнском контроле из которого следует вызов данного контрола? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2006, 11:58 |
|
||
|
Как обработать событие Click в asp:button
|
|||
|---|---|---|---|
|
#18+
Более менее разобрался с происходящим но остаются вопросы: В подгружаемом к странице контроле объявляю событие: 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 Все замечательно компилится но не работает, почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2006, 19:05 |
|
||
|
Как обработать событие Click в asp:button
|
|||
|---|---|---|---|
|
#18+
А ты контрол динамически подгружаешь? Если да то проблема именно в этом. Там кажись проблема в том что когда ты нажимаешь на Save то идет PostBack, перегружается страница, в ней соответственно грузится твой контрол но новый... события твоего уже как бы нету то кнопки Save... Копай в этом направлении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2006, 19:35 |
|
||
|
Как обработать событие Click в asp:button
|
|||
|---|---|---|---|
|
#18+
Просто добавь обработчик события для контрола. Вот, например, статья в Microsoft KB.-- Гайдар Магдануров E-Mail | Блог | Сайт Difficult I do now, impossible will take a while... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2006, 22:34 |
|
||
|
Как обработать событие Click в asp:button
|
|||
|---|---|---|---|
|
#18+
Ты не туда меня указал - там в статье рассказано как добавить контрол динамически а у меня с добавлением контрола проблем нет. У меня такая проблема что в 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 - причина кроется где-то совсем рядом, только я ее не вижу! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2006, 00:25 |
|
||
|
Как обработать событие Click в asp:button
|
|||
|---|---|---|---|
|
#18+
Согласен с тобой здесь нужно обработать пост-событие с помощью контрукции RaiseEvent - но не получается! Но почему? см. комменты ниже :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2006, 00:28 |
|
||
|
Как обработать событие Click в asp:button
|
|||
|---|---|---|---|
|
#18+
Попробуй перенести добавление контролов в Page_Init. Возможно из-за вложенности не поднимается ViewState для них. Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2006, 01:51 |
|
||
|
Как обработать событие Click в asp:button
|
|||
|---|---|---|---|
|
#18+
Не не работает! Все так же! Вообще по логике вещей контролы должны добавляться в Page_Init или Page_Load и если я добавляю контролы то быть может загрузить их а потом типа Visible=True - и дело с концом, но ради спортивного интереса хочется крассиво :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2006, 20:06 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=34092649&tid=1388020]: |
0ms |
get settings: |
9ms |
get forum list: |
23ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
86ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 437ms |

| 0 / 0 |
