Передайте значение и перезагрузите пользовательский элемент управления из Javascript - PullRequest
2 голосов
/ 17 сентября 2009

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

Как мне это сделать?

что у меня так далеко:

альтернативный текст http://www.balexandre.com/temp/2009-09-17_0917.png

Показать структуру компании ссылка сделана из

<a href="javascript:showStruct('112:201334607','5564967221');" 
   class="showStructLink">Show company structure</a>

метод showStruct записан как

  function showStruct(pid, cnr) {
     if (_showStrut == 0)
        return;

     // fancy stuff to be more apealing visually
     $("#tdSearch").removeClass("tabTitleUp01").addClass("tabTitleDownUp01");
     $("#tdStruct").removeClass("tabTitleDownUp02").addClass("tabTitleUp02");

     $("#srtr1").hide();
     $("#srtr2").hide();
     $("#sttr1").show();

     // enable Search Results tab to be clicked in order to get back
     $("#tdSearch")
        .addClass("pointer")
        .bind("click", function() { hideStructure(); });

     // pass the company number and reload wcCompanyStruture web user control
     // __doPostBack('RefreshWebUserControl', cnr);
  }

Я могу сделать простую страницу aspx с элементом управления внутри и из jQuery вызвать $ .get () для правильного запуска и заполнения элемента управления, но я действительно хочу научиться делать это правильно, используя метод ASP.NET AJAX. отправить номер и позвонить на него RefreshData

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

wcCompanyStruture.RefreshData("companyNumberHere");

что мне нужно сделать на моей стороне пользовательского контроля и в методе showStruct, чтобы создать это поведение?

Вся помощь приветствуется, спасибо.

Ответы [ 3 ]

5 голосов
/ 17 декабря 2009

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

Мне кажется, что у вас есть результат поиска + сценарий просмотра подробностей, что вы идете по неверному пути.

Когда вы нажимаете «Показать структуру компании», вы хотите увидеть подробности на второй вкладке, верно? Если это так, то подход с использованием вкладок может сбить пользователя с толку, лучше будет с модальным всплывающим окном, которое показывает детали. Нет обратной передачи, просто AJAX загружает страницу с деталями в модальное всплывающее окно.

Это очень легко с JQuery, используя виджет диалога в JQueryUI и функцию загрузки AJAX $('#SomeDiv').load('details.aspx?id='+companyid);

http://docs.jquery.com/Ajax/load#urldatacallback

Это даст гораздо лучший пользовательский опыт и удивительно прост в коде.

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

0 голосов
/ 18 ноября 2009

Вы можете использовать LinkButton для каждой ссылки «Показать структуру компании» и установить свойство CommandArgument с соответствующим идентификатором компании. LinkButton вызовет обратную передачу.

Вторым решением будет использование скрытой переменной: <input type="hidden" id="hiddenCompanyNumber"> и установка ее значения в методе showStruct. Затем вы можете позвонить __doPostBack(), для которого вам нужен контроль, на который, я думаю, можно отправить обратно.

В целом, я думаю, что первое решение менее хакерское.

0 голосов
/ 10 ноября 2009

Вы можете найти его здесь

http://codeclimber.net.nz/archive/2007/06/26/how-to-refresh-an-updatepanel-from-javascript.aspx

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

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