Форум программистов, компьютерный форум, киберфорум
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
61 / 61 / 11
Регистрация: 30.06.2010
Сообщений: 260
1

Сымитировать нажатие кнопки

26.03.2012, 14:09. Показов 1827. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Уважаемые коллеги!
У меня возникла следующая проблема:
На странице имеется ReportViewer и таблица, которая строится javaScript-ом. В ячейках таблицы - даты.
Мне нужно по нажатию на строку таблицы взять записанную в неё дату, и передать её в качестве нового параметра для моего ReportViewer-а.
Для этого использую onclick() для строки таблицы. В javaScript-е выбираю дату и отправляю её на сервер через PageMethod.
Вся загвоздка заключается в том, что для использования WebMethod-а, мне необходимо использовать static-метод, который не может напрямую обращаться к reportViewer.
Привожу код:
Нажимаю на строку таблицы
Javascript
1
2
3
function report() {
    PageMethods.Report(this.cells[0].innerText);    
}
Код на сервере:
C#
1
2
3
4
5
6
7
8
[WebMethod]
         static public void Report(string D)
        {
            ReportParameter p1 = new ReportParameter("date2", D);
            WF_Ctrl_UGP wf = new WF_Ctrl_UGP();
            wf.ReportViewer1.ServerReport.ReportPath = "/Отчёты/new/Рапорт"; // здесь он говорит, что wf.ReportViewer1 = null
            wf.ReportViewer1.ServerReport.SetParameters(new ReportParameter[] { p1 });
        }
Если сделать таким образом

C#
1
2
3
4
5
6
        public void Report(string D)
        {
            ReportParameter p1 = new ReportParameter("date2", D);
            ReportViewer1.ServerReport.ReportPath = "/Отчёты/new/Рапорт"; // здесь он говорит, что wf.ReportViewer1 = null
            ReportViewer1.ServerReport.SetParameters(new ReportParameter[] { p1 });
        }
то всё работает, только вот этот код из javascript никак не вызвать, так как WebMethod никак не хочет выполнять нестатичный метод...

Мой план: сделать невидимую кнопку (<asp:Button>), на клик которой повесить нестатичную процедуру (как во втором варианте) и при клике на строку таблицы писать в какой-нибудь "<asp:HiddenField>" мою дату, и потом сымитировать нажатие на кнопку, где реализовать примерно следующее:
C#
1
2
3
4
5
6
        protected void Button2_Click(object sender, EventArgs e)
        {
            ReportParameter p1 = new ReportParameter("date2", HiddenField1.value); // Берем дату из скрытого поля
            ReportViewer1.ServerReport.ReportPath = "/Отчёты/new/Рапорт"; //
            ReportViewer1.ServerReport.SetParameters(new ReportParameter[] { p1 });  
        }
Тогда, предположительно, должно сработать.
Но есть одно "НО": я не знаю, как сымитировать в javascript коде нажатие на кнопку "<asp:Button>", либо не в javascript а в статичном WebMethod-е (но тут он, скорее всего, скажет, что нельзя из статичного метода вызывать нестатичные..., значит, надо имитировать из кода javascript всё-таки...).
Помогите, пожалуйста?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2012, 14:09
Ответы с готовыми решениями:

Нажатие несуществующей кнопки на странице
Доброго времени суток, в процессе написания приложения (for fun) столкнулся с проблемой. На...

Как заполнить поля и сымитировать нажатие на кнопку GET-запросом
код выгляди так: &lt;html xmlns=&quot;http://www.www333.org/2012/xhtml&quot;&gt; &lt;head id=&quot;Head1&quot;...

Привязать выполнение действия кнопки на нажатие кнопки Enter
У меня кнопка - Button, выполняет такое то действие, не подскажите, как привязать выполнение...

Нажатие кнопки на сайте
Здравствуйте. Бьюсь над одной задачкой.. Необходимо на сайте нажат кнопку, которая подгружается...

1
2735 / 2041 / 380
Регистрация: 22.07.2011
Сообщений: 7,731
26.03.2012, 19:54 2
как сымитировать в javascript коде нажатие на кнопку "<asp:Button>"
Javascript
1
 - document.getElementById("<%=Button.ClientID %>").click();
Только при таком клике у тебя вся страница будет перегружена, а тебе как я понял нужно ajax обновление.
В статичных методах, твоих контролов не существует т.к объект страницы не создается.
И поскольку тебе нужно заполнять свойства ReportViewer1 на стороне сервера то наиболее правильное (из стандартного набора) решение будет заюзать UpdatePanel. - думаю знаешь про нее ).
Твою таблицу, по которой нужно кликать, можно оформить в виде юезр.контрола , у которого реализовать интерфейс IPostBackEventHandler. Соответственно на странице подписаться на событие клика по строке, и уже в обработчике этого события задавать свойства ReportViewer1 -а. А что бы обновлялся только ReportViewer ,а не вся страница, поместить его в UpdatePanel, в которой прописать тригер на постбэк твоего юзер. контрола.
Кстати, ReportViewer поддерживает клиентское api - http://msdn.microsoft.com/ru-r... 56405.aspx, так что можно задавать параметры на стороне клиента и спокойно юзать WebMethod-ы при необходимости.
1
26.03.2012, 19:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.03.2012, 19:54
Помогаю со студенческими работами здесь

webBrowser нажатие кнопки
Думал, что нужно будет использовать webBrowser1.Document.GetElementById Но посмотрев исходный код,...

Нажатие кнопки в чужом приложении
Здравствуйте. Задался целью программно нажать на кнопку в чужой программе. using System; using...

Нажатие кнопки в другом приложении
Привет всем! Объясните пожалуйста, как написать приложение, которое программно нажимает кнопку в...

Как реализовать нажатие кнопки в webbrowser?
Есть три страницы html . Нажимаю на кнопку в webbrowser так: private void...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru