Можно ли запустить событие onclientclick другой кнопки?

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

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

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

 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

person Eric    schedule 18.05.2009    source источник


Ответы (2)


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

  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? Или что-то другое? Это предполагает набор инструментов.

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

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

person alanquillin    schedule 18.05.2009
comment
Ух ты. ты сделал это!. Благодарю вас! - person Eric; 18.05.2009
comment
Что, если бы я хотел изменить текст текстового поля по щелчку клиента прямо перед тем, как эта функция сработает? Причина, по которой я хочу это сделать, заключается в том, что этот модальный режим отображает вид сетки с данными, которые зависят от данных из текстового поля. Это текстовое поле получит данные при клике клиента из данных строки gridview. любая идея, как сделать все это на одном и том же onclientclick? - person Eric; 22.05.2009
comment
Когда вы устанавливаете свойство onclientclick, вы можете вложить несколько операторов javascript, если они разделены знаком ;. Как: gridButton.OnClientClick = String.Format(getElementById('txtBoxId').text='новый текст'; openModal('{0}');, modalButton.ClientId)) - person alanquillin; 25.05.2009

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

Попробуйте изучить метод Page.ClientScript.GetPostBackClientHyperlink.

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

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

javascript:document.getElementById('clientSideID').click();
person thmsn    schedule 18.05.2009