`

Grid读取json数据

 
阅读更多

Grid读取json数据

一、不传URL

{"UserName":"admin","Name":"李亚斌","Gender":"M","Password":"123456","Status":"0","Department":"技术部","Title":"程序员","Email":"bingren12345@hotmail.com","OfficePhone":"5123456","Mobile":"13805602615","Comments":"","CreateUser":"1","CreateTime":"2009-10-190:00:00","ModifyUser":"1","ModifyTime":"2009-10-3010:04:22"}, {"UserName":"00001","Name":"李香兰","Gender":"F","Password":"123456","Status":"0","Department":"技术部","Title":"程序员","Email":"lixianglan@yahoo.com","OfficePhone":"5123456","Mobile":"13812345678","Comments":"","CreateUser":"1","CreateTime":"2009-10-310:00:00","ModifyUser":"","ModifyTime":""} ] } vards=newExt.data.Store({ //proxy:newExt.data.MemoryProxy(myData), reader:newExt.data.JsonReader({root:'Head'}, [{name:'UserName'},{name:'Name'},{name:'Gender'},{name:'Password'},{name:'Status'},{name:'Department'},{name:'Title'},{name:'Email'},{name:'OfficePhone'}]) }); ds.loadData(myData) 或者 vards=newExt.data.Store({ proxy:newExt.data.MemoryProxy(myData), reader:newExt.data.JsonReader({root:'Head'}, [{name:'UserName'},{name:'Name'},{name:'Gender'},{name:'Password'},{name:'Status'},{name:'Department'},{name:'Title'},{name:'Email'},{name:'OfficePhone'}]) }); ds.load()都可以

二、使用URL

(1)JSON HTMLPage.htm页面做数据源

{"Head":[{"appeId":"1","survId":"1","location":"","surveyDate":"2008-03-14","surveyTime":"12:19:47","inputUserId":"1","inputTime":"2008-03-1412:21:51","modifyTime":"0000-00-0000:00:00"},{"appeId":"2","survId":"32","location":"","surveyDate":"2008-03-14","surveyTime":"22:43:09","inputUserId":"32","inputTime":"2008-03-1422:43:37","modifyTime":"0000-00-0000:00:00"},{"appeId":"3","survId":"32","location":"","surveyDate":"2008-03-15","surveyTime":"07:59:33","inputUserId":"32","inputTime":"2008-03-1508:00:44","modifyTime":"0000-00-0000:00:00"},{"appeId":"4","survId":"1","location":"","surveyDate":"2008-03-15","surveyTime":"10:45:42","inputUserId":"1","inputTime":"2008-03-1510:46:04","modifyTime":"0000-00-0000:00:00"},{"appeId":"5","survId":"32","location":"","surveyDate":"2008-03-16","surveyTime":"08:04:49","inputUserId":"32","inputTime":"2008-03-1608:05:26","modifyTime":"0000-00-0000:00:00"},{"appeId":"6","survId":"32","location":"","surveyDate":"2008-03-20","surveyTime":"20:19:01","inputUserId":"32","inputTime":"2008-03-2020:19:32","modifyTime":"0000-00-0000:00:00"}]}

相应的ext代码

Ext.onReady(function(){ varproxy=newExt.data.HttpProxy({url:'HTMLPage.htm'}); varreader=newExt.data.JsonReader({root:'Head'}, [ {name:'appeId',mapping:'appeId'}, {name:'survId'}, {name:'location'}, {name:'surveyDate'}, {name:'surveyTime'}, {name:'inputUserId'} ] ) varstore=newExt.data.Store({ proxy:proxy, reader:reader }); store.load(); vargrid=newExt.grid.GridPanel({ store:store, columns:[ {header:"appeId",width:60,dataIndex:'appeId',sortable:true}, {header:"survId",width:60,dataIndex:'survId',sortable:true}, {header:"location",width:60,dataIndex:'location',sortable:true}, {header:"surveyDate",width:100,dataIndex:'surveyDate',sortable:true}, {header:"surveyTime",width:100,dataIndex:'surveyTime',sortable:true}, {header:"inputUserId",width:80,dataIndex:'inputUserId',sortable:true} ], renderTo:'example-grid', width:540, height:200 });

(2).如果json 数据中 没有数据标题"Head“只需要把reader改成 如下即可:其他不需要改变

varreader=newExt.data.JsonReader({}, [ {name:'appeId',mapping:'appeId'}, {name:'survId'}, {name:'location'}, {name:'surveyDate'}, {name:'surveyTime'}, {name:'inputUserId'} ] )

经验小技巧:传data 的URL文件可为,html,aspx.js等,文件引用的js永远和 文件在同一路径。

另外主要注意一下 HttpProxy 和MemoryProxy的区别,细心的读者可以看到 以上两种方法 使用的proxy使用的不同

MemoryProxy

MemoryProxy只能从JavaScript对象获得数据,可以直接把数组,或JSON和XML格式的数据交给它处理,如下面的代码所示。
var proxy = new Ext.data.MemoryProxy([
['id1','name1','descn1'],
['id2','name2','descn2']
]);
HttpProxy
HttpProxy使用HTTP协议,通过Ajax去后台取数据,构造它时需要设置url:'xxx.jsp'参数。这里的url可以替换成任何一个合法的网址,这样HttpProxy才知道去哪里获取数据,如下面的代码所示。
var proxy = new Ext.data.HttpProxy({url:'xxx.jsp'});
后台需要返回EXT所需要的JSON格式的数据,下面的内容就是后台使用JSP的一个范例,如下面的代码所示。
response.setContentType("application/x-json");
Writer out = response.getWriter();
out.print("[" +
"['id1','name1','descn1']" +
"['id2','name2','descn2']" +
"]");
请注意,这里的HttpProxy不支持跨域,它只能从同一域中获得数据。如果想跨域,请参考下面的ScriptTagProxy。

ScriptTagProxy
ScriptTagProxy的用法几乎和HttpProxy一样,如下面的代码所示。
var proxy = new Ext.data.ScriptTagProxy({url:'xxx.jsp'});
从这里也看不出来它是如何支持跨域的,我们还需要在后台进行相应的处理,如下面的代码所示
String cb = request.getParameter("callback");
response.setContentType("text/javascript");
Writer out = response.getWriter();
out.write(cb + "(");
out.print("[" +
"['id1','name1','descn1']" +
"['id2','name2','descn2']" +
"]");
out.write(");");
其 中的关键就在于从请求中获得的callback参数,这个参数叫做回调函数。ScriptTag- Proxy会在当前的HTML页面里添加一个<script type="text/javascript"src="/xxx.jsp"> </script>标签,然后把后台返回的内容添加到这个标签中,这样就可以解决跨域访问数据的问题。为了让后台返回的内容可以在动态生成的 标签中运行,EXT会生成一个名为callback的回调函数,并把回调函数的名称传递给后台,由后台生成callback(data)形式的响应内容, 然后返回给前台自动运行。

分享到:
评论

相关推荐

    grid数据读取实例方法

    5. 前端解析接收到的JSON数据,然后调用grid组件的方法更新显示,如`updateGrid`函数: ```javascript function updateGrid(data) { // 根据grid组件的API,将数据绑定到grid var grid = document.getElementById...

    单排显示gridview并从解析JSON读取数据加载项目

    这个"单排显示gridView并从解析JSON读取数据加载项目"是一个典型的案例,展示了如何将JSON数据转换为可视化的UI元素,特别适用于创建如图片库、应用列表等场景。 首先,GridView的基本使用涉及到以下几个关键步骤:...

    extjs动态表格实例(封装GRID,从STRUTS2读取后台数据 )

    6. **动态列生成**:根据后台返回的列信息动态创建和配置Grid的列,这通常涉及到解析JSON数据中的列头信息。 7. **优化性能**:考虑使用分页(Paging)和延迟加载(Lazy Loading)来优化大数据量的加载,提高用户...

    手动动态添加 PropertyGrid 的数据行并显示 C# (非属性绑定方式)

    在一些特殊情况下,我们可能需要手动动态地添加数据行到`PropertyGrid`而不是通过属性绑定来实现。本篇文章将深入探讨如何在不依赖属性绑定的情况下,通过代码直接控制`PropertyGrid`的显示内容。 ### 1. `Property...

    单排显示gridview并从解析JSON读取数据加载项目.rar

    在`getView()`方法中,开发者可能使用了LayoutInflater来实例化布局文件(比如item_grid.xml)中的视图,并将解析出的JSON数据绑定到视图的各个控件上,如TextView或ImageView。这通常涉及到findViewById()方法来...

    小程序源码 单排显示gridview并从解析JSON读取数据加载项目.zip

    在WXML中,可以将解析后的JSON数据通过`wx:for`指令遍历,逐个渲染到Grid View的各个单元格。 5. **事件处理**: 在Grid View的每个单元格上,可能需要添加点击事件,以便用户交互。这可以通过在`&lt;view&gt;`标签上...

    Android应用源码之单排显示gridview并从解析JSON读取数据加载项目.zip

    在这个项目中,适配器会解析JSON数据,创建并填充每个GridItem的View。 5. 自定义View: 由于GridView的每个单元格(GridItem)可能需要特定的布局和样式,因此,我们通常会为每个单元格创建一个自定义的View,...

    grib2json--grib2文件转换成json格式

    标题 "grib2json -- 将grib2文件转换为json格式" 描述...综上所述,grib2json转换涉及到气象数据存储格式、数据解析技术、json数据交换格式以及软件工具的使用,对于理解和处理气象数据的科研和业务工作具有重要意义。

    安卓开发-单排显示gridview并从解析JSON读取数据加载项目.zip.zip

    在这个项目中,我们将深入探讨如何实现一个只有一行的GridView,并从JSON数据源加载内容。 首先,让我们了解GridView的基本用法。GridView继承自AbsListView,它会将数据集分割成多行多列的视图。在XML布局文件中,...

    Ext Grid控件的高级应用

    本实例使用官方Ext3.1包 分五个部分 1.创建简单快捷的Ext Grid控件 代码清晰 2.Grid 读取 Xml 3.Grid 读取 json 4.Grid 读取 Excel 5.直接在 Grid 控件进行增删改查的操作 有任何疑问的同志欢迎提出即可谢谢

    js读json分页通讯录

    2. **JavaScript数据解析**:在本例中,首先需要读取JSON数据,这通常通过AJAX(Asynchronous JavaScript and XML)请求实现。利用`XMLHttpRequest`对象或现代浏览器的`fetch` API,可以从服务器获取JSON数据。 3. ...

    使用Json传值的示例

    这段代码展示了如何配置数据存储`ds`,包括设置HTTP代理指向`grid.jsp`页面,以及如何使用`JsonReader`解析从该页面接收到的JSON数据。 ```jsp &lt;% String json = "{totalProperty:100,root:["; %&gt; for (int i...

    EXT实例+JSON

    3. **定义数据读取器(Reader)**:数据读取器负责解析服务器返回的JSON数据。对于JSON格式,通常使用`Ext.data.reader.Json`,设置`rootProperty`来指定JSON对象中的数据数组位置。 4. **加载数据**:一旦数据存储...

    非常好的.net的grid控件(注册)

    8. **数据绑定**:可以与各种数据源绑定,如数据库、XML、JSON等。 9. **模板列**:对于复杂的数据结构,可以使用模板列来展示自定义的UI元素。 10. **事件处理**:提供丰富的事件,如CellClick、RowEditing等,方便...

    Grid++Report6.0

    5、数据源除了OLE DB外,增加XML、JSON与普通文本数据。 6、在编程接口中增加了很多应用函数,如数据压缩、数字格式化、日期时间解析与格式化、打印机与纸型枚举、文件选择对话框等。 7、其它杂项功能,根据多年收集...

    ext grid带分页(服务器端)

    我们将基于EXT 2.1版本,结合JSON数据格式和JSP技术来讲解这一主题。 首先,我们需要了解EXT Grid的基本结构。EXT Grid由一系列列定义、数据源和配置选项组成。在服务器端分页中,数据源不再一次性加载所有记录,...

    dhtmlxGrid取一列方法

    - **数据绑定**:dhtmlxGrid可以与多种数据源绑定,包括本地数组、JSON对象或远程服务器端点,确保数据的实时更新和同步。 - **性能优化**:在处理大量数据时,dhtmlxGrid提供了分页、虚拟滚动等特性,有效提升了...

    通过table转换的grid

    3. 使用数据网格库(如jQuery Grid或ag-Grid),根据创建的JSON数据初始化grid组件。 4. 配置grid的参数,如列定义、排序、过滤和分页功能。 5. 在页面上替换原始的HTML表格,显示新的grid组件。 这样的转换对...

    js插件ParamQuery grid.rar

    这可以通过Ajax请求实现,或者直接使用静态JSON数据。 2. 数据操作:提供完整的CRUD(创建、读取、更新、删除)功能。用户可以直接在网格中编辑单元格,添加新行,或者删除现有记录。这些操作通常会触发相应的事件...

    grib2json_grib_

    5. 最后,你可以使用转换后的JSON数据进行进一步的分析、可视化或者集成到其他应用程序中。 值得注意的是,由于`grib`文件结构复杂,`grib2json`可能需要依赖一些专门处理`grib`格式的库,如ECMWF的`eccodes`,以便...

Global site tag (gtag.js) - Google Analytics