Extjs GridPanel 载入xml文件 [xml作为数据源显示]

ContractedBlock.gif ExpandedBlockStart.gif Code

 一。静态示例

1.xml文件内容:

 

<?xml version="1.0" encoding="UTF-8"?>
<Data>
  
<Items>   
    
<TotalResults>203</TotalResults>
    
<TotalPages>21</TotalPages>
    
<Item>
      
<ASIN>0446355453</ASIN>     
      
<Author>Jimmy.Yang</Author>
      
<Manufacturer>Warner Books</Manufacturer>
      
<ProductGroup>Book</ProductGroup>
      
<Title>Master of the Game</Title>      
    
</Item>
    
<Item>
      
<ASIN>0446613657</ASIN>          
      
<Author>Sidney Sheldon</Author>
      
<Manufacturer>Warner Books</Manufacturer>
      
<ProductGroup>Book</ProductGroup>
      
<Title>Are You Afraid of the Dark?</Title>      
    
</Item>
  
  
</Items>
</Data>
2.ExtJs调用页面
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    
<link rel="stylesheet" type="text/css" href="../resources/css/ext-all.css" />
     
<script type="text/javascript" src="../adapter/ext/ext-base.js"></script>
    
<script type="text/javascript" src="../ext-all.js"></script> 
    
<title>ExtJs_Grid_Xml</title>
</head>
<body>

<script type="text/javascript"> 

    Ext.onReady(
function() {
        
        
var store = new Ext.data.Store({           
            url: 
'GridData.xml',
            reader: 
new Ext.data.XmlReader(
                { record: 
'Item' },                
                [
"ASIN","Author""Manufacturer""ProductGroup""Title"])
        });

        
        
var grid = new Ext.grid.GridPanel({
            store: store,
            columns: [
                { id: 
"ASIN", header: "出版号", width: 120, dataIndex: 'ASIN', sortable: true },
                { header: 
"作者", width: 120, dataIndex: 'Author', sortable: true },
                { header: 
"书名", width: 180, dataIndex: 'Title', sortable: true },
                { header: 
"制作商", width: 115, dataIndex: 'Manufacturer', sortable: false },
                { header: 
"产品组", width: 100, dataIndex: 'ProductGroup', sortable: false }],
            renderTo: 
'example-grid',
            viewConfig: { columnsText: 
'显示列', sortAscText: '升序', sortDescText: '降序' },
            width: 
640,
            height: 
100
        });

        store.load();
    });

</script>

<div id="example-grid"></div>
</body>
</html>
 

运行效果如下图:



转载请注明来自"菩提树下的杨过" http://www.cnblogs.com/yjmyzz/archive/2008/08/28/1278949.html

 

二。结合WCF动态读取

1.WCF端关键代码
定义一个可序列化的类(当然也可以是Linq to Sql中自动生成的类,不过要手动加DataContract和DataMember标记,以满足WCF的数据契约要求)

 [DataContract]
    public class Book 
    {
        [DataMember]
        public string ISBN;

        [DataMember]
        public string Title;

        [DataMember]
        public string Author;

        [DataMember]
        public string Publisher;
    }

返回Xml数据的方法,注意格式要设置成WebMessageFormat.Xml

[OperationContract]
        [WebInvoke(ResponseFormat = WebMessageFormat.Xml, Method = "GET", UriTemplate = "GetXmlData")]
        public Book[] GetXmlData() 
        {
            List
<Book> _List = new List<Book>();
            _List.Add(new Book() { ISBN = "00001", Title = "c#深入编程(第四版)", Author = "Alien", Publisher = "北京出版社" });
            _List.Add(new Book() { ISBN = "00002", Title = "ExtJs完全教程", Author = "Mike", Publisher = "上海出版社" });
            return _List.ToArray();
        }
 

2.前端ExtJs代码

<script type="text/javascript"> 

    Ext.onReady(
function() {
        
        
var store = new Ext.data.Store({
        url: 
'MyService.svc/GetXmlData',
            reader: 
new Ext.data.XmlReader(
                { record: 
'Book' },
                [
"Author""ISBN""Publisher""Title"])
        });

        
        
var grid = new Ext.grid.GridPanel({
            store: store,
            columns: [
                { id: 
"ISBN", header: "出版号", width: 120, dataIndex: 'ISBN', sortable: true },
                { header: 
"作者", width: 120, dataIndex: 'Author', sortable: true },
                { header: 
"书名", width: 180, dataIndex: 'Title', sortable: true },
                { header: 
"出版社", width: 115, dataIndex: 'Publisher', sortable: false }],                
            renderTo: 
'example-grid',
            viewConfig: { columnsText: 
'显示列', sortAscText: '升序', sortDescText: '降序' },
            width: 
640,
            height: 
100
        });

        store.load();
    });

</script>
除了把url由xxx.xml,改成了"MySerivce.svc/GetXmlData"其它的几乎没变化,运行之后,用Web Development Helper插件监测到GetXmLData返回的内容为:

 

<ArrayOfBook xmlns="http://schemas.datacontract.org/2004/07/Ajax_WCF" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Book>
<Author>Alien</Author>
<ISBN>00001</ISBN>
<Publisher>北京出版社</Publisher>
<Title>c#深入编程(第四版)</Title>
</Book>
<Book>
<Author>Mike</Author>
<ISBN>00002</ISBN>
<Publisher>上海出版社</Publisher>
<Title>ExtJs完全教程</Title>
</Book>
</ArrayOfBook>

转载于:https://www.cnblogs.com/Abel_cn/archive/2008/12/11/1353116.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值