powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Сымитировать нажатие кнопки
25 сообщений из 26, страница 1 из 2
Сымитировать нажатие кнопки
    #37723072
Wild Wolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые коллеги!
У меня возникла следующая проблема:
На странице имеется 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 / 0
Сымитировать нажатие кнопки
    #37723081
.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
.
Гость
Wild Wolfя не знаю, как сымитировать в javascript коде нажатие на кнопку http://api.jquery.com/click/
...
Рейтинг: 0 / 0
Сымитировать нажатие кнопки
    #37723107
Wild Wolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Там, для jquery. Я его не использую. Глупо, наверно, будет цеплять целую библиотеку, чтоб нажать на одну кнопку ))
...
Рейтинг: 0 / 0
Сымитировать нажатие кнопки
    #37723128
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wild WolfТам, для jquery. Я его не использую. Глупо, наверно, будет цеплять целую библиотеку, чтоб нажать на одну кнопку ))
А ещё глупее сымитировать нажатие кнопки, что, скорее всего, не получится. Да и не за чем.
...
Рейтинг: 0 / 0
Сымитировать нажатие кнопки
    #37723201
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeWild WolfТам, для jquery. Я его не использую. Глупо, наверно, будет цеплять целую библиотеку, чтоб нажать на одну кнопку ))
А ещё глупее сымитировать нажатие кнопки, что, скорее всего, не получится. Да и не за чем. +1

По сабжу: сЫмитировать можно наверн так: document.getelementById('Button2').click() или кури __doPostBack
По тексту: опять статика, опять зло.. чем вам вебсервисы не подходят?
...
Рейтинг: 0 / 0
Сымитировать нажатие кнопки
    #37723211
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я считаю, что даже если возникает сама идея - создать костыль, то уже нужно рефакторить, а не нажимать скрытые кнопки, имхо
в будущем ведь сложно поддерживать будет
...
Рейтинг: 0 / 0
Сымитировать нажатие кнопки
    #37723668
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanSYS,

__doPostBack тоже хреново рефакторить, Но это - вполне правильное решение.
...
Рейтинг: 0 / 0
Сымитировать нажатие кнопки
    #37724559
Wild Wolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SanSYSShSergeпропущено...
А ещё глупее сымитировать нажатие кнопки, что, скорее всего, не получится. Да и не за чем. +1
...
По тексту: опять статика, опять зло.. чем вам вебсервисы не подходят?
Okей, согласна, что это костыль, это не есть хорошо. Тогда подскажите, пожалуйста, как эту операцию (описано в первом посте) провернуть через статический вебметод? У меня не получилось. Просто наткнулась на грабли, что в статичном методе никак не обратиться к моему ReportViewer-у и, следовательно не присвоить ему значение параметров.
...
Рейтинг: 0 / 0
Сымитировать нажатие кнопки
    #37724764
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никогда не работал с ReportViewer, но помню когда-то читал про внеполосные вызовы из страниц ASP.NET . Чем не вариант? :)
...
Рейтинг: 0 / 0
Сымитировать нажатие кнопки
    #37724955
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wild Wolf,

Естественно, C# не позволяет статическому методу обращение к не статическому члену.
А чем обосновано применение именно веб-метода? Почему не внедрить LinkButton и не обрабатывать это в постбеке?
Ну, да - постбек. Если это критично - запихать это в UpdatePanel .

Или я читал меж строк...

маленький офтоп
Пример того, что происходит при смешивании мух и котлет (котлеты жужжат и улетают :) ).

Если честно - эту кухню со внедренными методами уже порядком подзабыл: в своих проектах, если AJAX, использую веб-сервисы: гоняю JSON. Вопреки крикам о "тяжеловесности" веб-сервисов, пока такого не заметил. Но это предъявляет требования ко всей архитектуре страницы/проекта.
...
Рейтинг: 0 / 0
Сымитировать нажатие кнопки
    #37725096
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот это я топик проморгал!

Wild WolfНа странице имеется ReportViewer и таблица, которая строится javaScript-ом.
...
В javaScript-е выбираю дату и отправляю её на сервер через PageMethod.
...
Хренасе, атец?! Ты бы еще дату отправил через голубиную почту
На кой ляд тут пейдж методы с веб-сервисами, если задача решается тупейшим постбеком на сервер?
...
Рейтинг: 0 / 0
Сымитировать нажатие кнопки
    #37725108
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВот это я топик проморгал!
...Ща будет море крови
...
Рейтинг: 0 / 0
Сымитировать нажатие кнопки
    #37725258
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, а я то думаю, чего молчишь
...
Рейтинг: 0 / 0
Сымитировать нажатие кнопки
    #37725312
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Сымитировать нажатие кнопки
    #37725337
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: Стоим на стрёме
...
Рейтинг: 0 / 0
Сымитировать нажатие кнопки
    #37725442
Wild Wolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iConstНу, да - постбек. Если это критично - запихать это в UpdatePanel .

В UpdatePanel ReportViewer не работает, всё равно перегружается вся страница. У меня ReportViewer версии 9.0.0.0, Framework 3.5

МСУХренасе, атец?! Ты бы еще дату отправил через голубиную почту
На кой ляд тут пейдж методы с веб-сервисами, если задача решается тупейшим постбеком на сервер?
А Вы всегда были профессионалом в Web-программировании?
Ведь навык приходит с опытом, а если опыта большого нет, вот и приходится выкручиваться "голубиной почтой" c "костылями". Я не могу увидеть сходу решение проблемы. Постбек перегружает целиком страницу, а как я уже написала, UpdatePanel не помогает.
...
Рейтинг: 0 / 0
Сымитировать нажатие кнопки
    #37725455
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wild Wolf, да не обижайся ты так
МСУ, это же девушка )
...
Рейтинг: 0 / 0
Сымитировать нажатие кнопки
    #37725495
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Сымитировать нажатие кнопки
    #37725588
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wild WolfА Вы всегда были профессионалом в Web-программировании?
А Вы всегда были не профессионалом в Web-программировании?
Wild WolfВедь навык приходит с опытом, а если опыта большого нет, вот и приходится выкручиваться "голубиной почтой" c "костылями".
Чтобы не крутиться с костылями, задайте правильно вопрос - как сделать. Подскажем.
Wild WolfЯ не могу увидеть сходу решение проблемы.
См. выше.
Wild WolfПостбек перегружает целиком страницу
И что в этом страшного?
Wild Wolfа как я уже написала, UpdatePanel не помогает.
Так и говорит "Не помогу" ?
...
Рейтинг: 0 / 0
Сымитировать нажатие кнопки
    #37725627
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кр-р-ови-щ-щ-а!
...
Рейтинг: 0 / 0
Сымитировать нажатие кнопки
    #37726689
Wild Wolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУА Вы всегда были не профессионалом в Web-программировании?

Конечно же нет! Раньше всегда была профи, а потом бац! что-то случилось и вдруг стала задавать такие глупые вопросы. ))
МСУИ что в этом страшного?
Некрасиво. Тыкаешь на строку и моргает вся страница, а потом еще таблицу эту по-новой строить приходится.
МСУТак и говорит "Не помогу" ?
Нет. В том то и дело, хоть бы сказала, что ей надо, чтоб правильно работать. Молчит, как рыба и все равно перегружает страницу целиком...

Вот так выглядит ReportViewer в UpdatePanel.
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 <asp:UpdatePanel ID="UpdatePanel1" runat="server">
               <ContentTemplate>
                    <rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana" 
                    Font-Size="8pt" InteractiveDeviceInfos="(Коллекция)" 
                    WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt" Height="600px" 
                    Width="800px" ProcessingMode="Remote">
                    <ServerReport ReportPath="/Отчёты/new/рапорт" 
                        ReportServerUrl="http://seweb/reportserver" />
                    </rsweb:ReportViewer>
                </ContentTemplate>
 </asp:UpdatePanel>


Непонятно, почему не работает частичное обновление...

iConst Настройка ReportViewer для асинхронной подготовки отчетов
Вроде всё настроено: ProcessingMode="Remote"; AsyncRendering="True"; Поиграв с этими свойствами, поняла, что это вроде как просто способ отображения. Типа, если AsyncRendering="True", то в момент формирования отчета "Крутится загрузка" в самом отчёте, а страница загружается сама по себе. Если AsyncRendering="False", то страница формируется полностью только при полном построении отчета. В любом случае она загружается заново.
...
Рейтинг: 0 / 0
Сымитировать нажатие кнопки
    #37726697
Wild Wolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кто-то сталкивался с этим? http://msdn.microsoft.com/ru-ru/library/dd756405.aspx,- можно задавать параметры на стороне клиента.
Когда пытаюсь сделать на стороне клиента var viewer = $find("<%=ReportViewer1.ClientID %>"); \ либо var viewer = Sys.Application.findComponent("<%=ReportViewer1.ClientID %>"), возвращает viewer = null;
...
Рейтинг: 0 / 0
Сымитировать нажатие кнопки
    #37726701
Wild Wolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Wild WolfНепонятно, почему не работает частичное обновление...

Кажется, понятно теперь... RV не работает с UpdatePanel (вроде, так написано в документации)
...
Рейтинг: 0 / 0
Сымитировать нажатие кнопки
    #37726706
Wild Wolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ГОСПОДА! Не читайте мои предыдущие 3 поста, ибо там бред непрофессионала (я не установила триггер на UpdatePanel... :-[ )
...
Рейтинг: 0 / 0
Сымитировать нажатие кнопки
    #37726964
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wild WolfГОСПОДА! Не читайте мои предыдущие 3 поста, ибо там бред непрофессионала (я не установила триггер на UpdatePanel... :-[ )
Молодец, догадалась :)
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Сымитировать нажатие кнопки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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