Можно ли запустить событие onclientclick другой кнопки? - PullRequest
1 голос
/ 18 мая 2009

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

Итак, я хотел попытаться установить событие onclientclick кнопки gridview равным значению onclientclickevent этой скрытой кнопки. Возможно ли это или я должен идти об этом по-другому?

вот как я создал кнопку сетки

 If Not IsPostBack Then
        Dim field As New TemplateField
        field.HeaderText = "Sub Departments"
        Dim col As DataControlField = field
        GridView1.Columns.Add(col)

        For i As Integer = 0 To GridView1.Rows.Count - 1
            Dim btnview As New ImageButton
            btnview.ImageUrl = "\images\icons\xp_ico_search_24x24.gif"
            GridView1.Rows(i).Cells(3).Controls.Add(btnview)
        Next

End If

Ответы [ 2 ]

5 голосов
/ 18 мая 2009

Я предполагаю, что вы используете веб-формы. Если так, то да, это очень возможно. Сделайте следующее.

  1. Создание функции javascript на странице

    function openModal(btnId){
        btn = document.getElementById(btnId);
        btn.click(); // this should fire the click even of the button
    }
    
  2. на кнопке сетки добавьте событие onclientclick:

    gridButton.OnClientClick = String.Format("openModal('{0}');", modalButton.ClientId))
    

Это установит идентификатор клиента кнопки, которая запускает модальное окно в функцию javascript. Если вам нужно заполнить модальное окно другими данными, вы должны сделать это и в этой функции.

Используете ли вы ASP.Net AJAX Control Toolkit? Или что-то другое? Это предполагает инструментарий.

Кроме того, вы установили видимость кнопки скрытой, но не указали свойство Visible=False на стороне сервера, поскольку это не будет отображать кнопку. Чтобы скрыть это, вам нужно использовать свойство на стороне клиента style="display:none"

Эта ссылка может помочь: http://forums.asp.net/t/1066506.aspx

1 голос
/ 18 мая 2009

Это можно сделать, для этого нужно отключить функцию кнопок «DoPostback».

Попробуйте найти метод Page.ClientScript.GetPostBackClientHyperlink .

В качестве альтернативы вы можете использовать javascript и событие .click(), но я думаю, что это ограничивает вас IE в качестве браузера, хотя и не уверен в этом.

Это будет выглядеть так

javascript:document.getElementById('clientSideID').click();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...