Как вызвать Ajax OnClick из веб-части провайдера в веб-часть потребителя - PullRequest
0 голосов
/ 29 декабря 2008

Я пытаюсь управлять ajax-соединением, вызывая метод onclick для кнопки в отдельной веб-части, чтобы вызвать частичную обратную передачу для потребителя.

Веб-часть A (поставщик) вызывает метод в веб-части B (потребитель)

Веб-часть A

Тип t = myButton.GetType (); object [] p = новый объект [1]; p [0] = EventArgs.Empty; MethodInfo m = t.GetMethod ("OnClick", BindingFlags.NonPublic | BindingFlags.Instance); m.Invoke (myButton, p);

Веб-часть B

public void btnHidden_Click (отправитель объекта, EventArgs e) { Label1.Text = "Скрытая кнопка:" + DateTime.Now.ToString (); }

Когда я использую отражение, я получаю правильную информацию о HiddenButton. Однако я не могу вызвать событие «OnClick». BtnHidden_Click не выполняется. Он прекрасно работает, когда я вызываю из WebPart B в WebPart B, но не из другой веб-части.

Похоже, не слишком много информации об этом поведении. Есть предложения?

Спасибо.

Rob

Ответы [ 2 ]

1 голос
/ 17 февраля 2009

Поскольку веб-части должны быть как можно слабосвязанными, я бы использовал инфраструктуру подключений веб-частей и шаблон подписчика, чтобы справиться с этим.

Связь между подключенными частями осуществляется через интерфейс. Этот интерфейс может включать методы подписки и отмены подписки. Когда соединение установлено, потребительская часть может подписаться на любые элементы управления UpdatePanel, которые необходимо обновить при изменении выбранного элемента в поставщике. Затем, когда выбранный элемент действительно изменяется, часть поставщика может обойти своих подписчиков и вызвать метод Update на UpdatePanel для принудительной асинхронной обратной передачи.

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

Надеюсь, это поможет.

0 голосов
/ 17 февраля 2009

Это невероятно легко решить с помощью JavaScript. Я не хочу сказать, что веб-части плохие (поскольку я никогда с ними не работал), но я скажу, что если вы способны программировать малейший бит JS в веб-частях, код :

document.getElementById('ElID').onclick();

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...