2008-10-21 66 views
3

我已经给出了一个使用html和javascript(通过ExtJS)编写的网格原型/模型,现在我需要在一个ASP.net Web应用程序中实现该网格。有没有人有任何关于如何将数据传递到网格的指针(特别是针对GroupingStore)。将数据从ASP.net返回到ExtJS Grid

我宁愿没有扩展的Web服务或帮助页面返回XML/JSON,所以如果有办法使用客户端回调或页面方法(你不能告诉我不是特别熟悉 - 流行语宾果!)或某些,这将是首选。

请不要建议我使用jQuery,内置的ASP.net网格或任何其他UI框架。 ExtJS电网的使用已被强制要求,所以这是我使用的电网,好或坏:)

回答

1

这是一个低科技解决方案。它不需要使用Web服务或任何其他附加技术。

步骤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 example。使用适当的查询字符串参数将数据存储url:设置为您的query.aspx页面的数据存储。

您还需要为网格设置列,并再次显示在ExtJs示例中。

或者...

我真的很感动,当我看着Coolite samples最近。他们是ExtJS的合作伙伴,并提供良好的ExtJS体验。不,我不为他们工作:)我没有尝试过他们的网格,但它可能是无痛的(以一个价格)。

+10

Yuck。您应该将警告标记为红色,大胆闪烁。从来没有,_NEVER_有一个页面,允许你做“sql = select *从订单where status ='open'”!不要这样做!我是认真的!这就像贴上一个标志“来到这里并且破解我,复制我的数据库,然后删除我拥有的所有数据!” – BlaM 2008-12-17 13:12:50

3

我相信一个服务,简单地返回您的网页的json结构是最好的选择,很好地在应用程序中抽象并可重用,而不是页面方法。