Взять Telerik Control и динамически ссылаться на него через запрос ajax на стороне сервера и выдвигать новые границы?

С элементами управления ASP, такими как Telerik Controls, у вас есть серверная сторона, на которую ссылаются, и разметка, отправляемая клиенту. Я пытался сделать с ним что-нибудь НОВОЕ.

У меня есть вызов ajax, который вернет объект json MODAL. Это модальное окно будет содержать TreeView. Из того, что я искал, заключается в том, что, если бы я сделал это, на самом деле у него не было бы бэкэнда, на который можно было бы ссылаться, поскольку он по сути проверяет сервер для какого-то одноразового вывода.

Я пытаюсь это изменить. Какова моя цель - заставить ajax ping построить телевизор, а затем при каждом последующем расширении узла возвращать всех дочерних узлов узла, на который был выполнен щелчок? Звучит просто, правда? Ну, не так, как я это делаю.

Мои запросы ajax просто собирались вернуть строку, которая анализируется с помощью jQuery в HTML, а затем вставляется в модальное окно. Я пробовал разные вещи, например:

StringWriter writer = new StringWriter();
HtmlTextWriter tOut = new HtmlTextWriter(writer);
ddFieldFilter.RenderControl(tOut);
tvFields = new RadTreeView();
tvFields.NodeExpand += new RadTreeViewEventHandler(tvFields_NodeExpand);
tvFields.NodeClick += new RadTreeViewEventHandler(tvFields_NodeClick);
startTree();
tvFields.RenderControl(tOut);
ret += writer.ToString();

Это работает не так, как я хотел, и произойдет сбой. Это не позволит мне сделать toString в TreeView, чтобы поместить разметку в строку.

Примечание: дерево НЕ НУЖНО сохранять, но если бы вы могли взять дерево и отправить его обратно на сервер для обновления, а затем вернуть его, это тоже работает.

Я думал, что после того, как дерево было напечатано, я бы тогда на каждом листе просто выполнял запрос ajax для TreeViewNodes или .... что-то подобное.

Мысли? Идеи? Исходя из того, на что я смотрел, и из моих мыслительных процессов, DIV НЕ МОЖЕТ быть целью веб-сервера для обновлений. Это больше похоже на фрейм, который я МОГ сделать ... поместил фрейм в div, но я стараюсь, чтобы все это выглядело красиво, без фреймов.


person Fallenreaper    schedule 18.07.2012    source источник
comment
Я как бы слежу за вопросом ... Взгляните на что-то похожее на то, что вы описываете здесь: stackoverflow.com/a/7802527/345490   -  person Icarus    schedule 18.07.2012
comment
Это работает для меня и заставило меня придумать несколько альтернативных вариантов. Кроме того, если ты поставишь это как ответ, Икар, я дам тебе ответ. Это было полезно и полезно.   -  person Fallenreaper    schedule 19.07.2012
comment
@Icarus, есть ли способ вместо того, чтобы делать это на стороне клиента, сделать ajax-вызов веб-службы, которая определит TreeView, а затем использовать RENDER или что-то еще для отправки строки клиенту?   -  person Fallenreaper    schedule 19.07.2012
comment
Да, это абсолютно возможно, но это чертовски круто, ИМО. Ответ, который я привел, более элегантен, проще в обслуживании и, скорее всего, работает лучше. Вот ссылка, объясняющая, как в любом случае делать то, о чем вы просите: stackoverflow.com/questions/450431/. Удачи.   -  person Icarus    schedule 19.07.2012
comment
Кстати: будьте осторожны с тем фактом, что метод загрузки пользовательского элемента управления на временной странице, чтобы затем просто вернуть строку html, вызовет проблемы с обратными передачами из-за недопустимого состояния просмотра. Причина в том, что отображаемая строка html будет содержать другой элемент формы с другим скрытым элементом viewstate; поэтому, когда вы отправляете ответ, вы в конечном итоге отправляете состояние просмотра из элемента управления, а не со страницы. Убедитесь, что вы удалили элементы form и viewstate из визуализированного элемента управления, прежде чем возвращать строку, чтобы она никогда не отправлялась обратно.   -  person Icarus    schedule 19.07.2012
comment
Благодарю вас за информацию и приму это к сведению. Я склоняюсь к большему - просто сделаю свое собственное дерево, которое будет выглядеть по-другому, а затем просто спроектирую его по мере необходимости, чтобы делать то, что я хочу. Я чувствую, что хак, который я бы реализовал, хотя и был бы мне понятен, не предназначен для людей, отвечающих за понимание, стили и документирование.   -  person Fallenreaper    schedule 19.07.2012