Возврат данных из ASP.net в ExtJS Grid

Мне дали прототип/макет сетки, написанный на html и javascript (через ExtJS), который мне теперь нужно реализовать в веб-приложении ASP.net. Есть ли у кого-нибудь указания о том, как передавать данные в сетку (в частности, в GroupingStore).

Я бы не хотел, чтобы веб-службы или вспомогательные страницы возвращали XML/JSON, поэтому, если есть способ использовать клиентские обратные вызовы или методы страницы (разве вы не можете сказать, что я не особенно знаком ни с тем, ни с другим - модное бинго!) или какой-то такой, что было бы предпочтительнее.

Пожалуйста, не рекомендую использовать jQuery, встроенную сетку ASP.net или любую другую структуру пользовательского интерфейса. Использование сетки ExtJS было санкционировано власть имущими, так что это сетка, которую я использую, хорошо это или плохо :)


person Rob    schedule 21.10.2008    source источник


Ответы (2)


Вот низкотехнологичное решение. Он не требует использования веб-сервисов или каких-либо других дополнительных технологий.

Шаг 1

Имейте страницу ASPX, которая принимает один параметр и вызывается следующим образом:

http://mysite.com/query.aspx?sql=select * from orders where status = 'open'

Шаг 2

В коде позади сделайте что-то вроде этого

void Page_Load(object sender, EventArgs e)
{
   Response.ContentType="text/json"; 
   DataTable contents = ExecuteDataTable(Request["sql"]);
   Response.Write( JRockSerialize( contents ) );
   Response.End();
}

Вы можете использовать JRock для сериализации таблицы данных в JSON. ИМХО, это дает самый чистый JSON.

Итак, сортировка DataTable в JSON...

ВНИМАНИЕ! Это явно упрощенный пример. Не следует передавать SQL в строке запроса, поскольку это небезопасно (вместо этого можно использовать именованные запросы и параметры).

Шаг 3

В коде ExtJS создайте сетку с хранилищем данных Json, как показано в этом Ext пример. Задайте для хранилища данных url: хранилище вашей страницы query.aspx с соответствующими параметрами строки запроса.

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

В качестве альтернативы...

Я был очень впечатлен, когда недавно посмотрел образцы Coolite. Они являются партнерами ExtJS и обеспечивают хороший опыт работы с ASP.NET и ExtJS. И нет, я у них не работаю :) Я не пробовал их сетку, но может быть безболезненно (по цене).

person tobinharris    schedule 21.10.2008
comment
Фу. Вы должны пометить ПРЕДУПРЕЖДЕНИЕ красным, жирным шрифтом и мигающим. Никогда, НИКОГДА, НИКОГДА не создайте страницу, позволяющую выполнять sql=select * из заказов, где статус = 'открыт'! Не делай этого! Я серьезно! Это все равно, что повесить табличку «Иди сюда и взломай меня». Скопируйте мою базу данных, а затем удалите все данные, которые у меня есть! - person BlaM; 17.12.2008
comment
Просто соглашаюсь с BlaM. Никогда-никогда так не делай. Напишите веб-сервис, получите результаты в формате JSON. Это очень просто. - person Chris Brandsma; 18.12.2008
comment
Верно. Проверьте thedailywtf.com/Articles/ по уважительной причине - person MPritchard; 17.06.2009

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

person redsquare    schedule 21.10.2008