Toolbar Paging Extjs 4& Json的问题

时间:2011-06-23 07:32:03

标签: json extjs paging toolbar extjs4

我正在使用 ExtJS4 来开发一些丰富的接口。我是ExtJS的初学者,我有一些问题。我有100条记录,我想每页显示20条记录。我已经完成了这个代码,但它只在所有页面中显示了20个记录。我已经在firebug中验证了我是否拥有所有数据:我只有20,而我的总数等于100.我需要帮助。

网络服务页面:

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[ScriptService]
public class Service : System.Web.Services.WebService
{
public class DataGridSource
    {
        public List<MyDvpt> maListe = new List<MyDvpt>();
        private int _total;
        public int Total 
        {
            get { return _total; }
            set {  _total = value; }
        }
    }

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true, XmlSerializeString = false)]
    public DataGridSource GetMyDvpt3(int pageSize, int pageNumber)
    {
        string connectionString = "Data source=DARWIN;Initial Catalog=AGREO_DVPT;User ID=temp;Password=pmet";

        SqlConnection connection = new SqlConnection(connectionString);

        SqlCommand command = new SqlCommand("SELECT TOP 100 E.NOM_EXP,ESP.NOM_ESP,V.NOM_VAR,P.SURF_PG,P.DD_CYCLE_PROD from gc.PG P inner join ADM.EXP E on E.ID_EXP = P.ID_EXP inner join GC.VAR V on V.ID_VAR = P.ID_VAR inner join GC.ESP ESP on ESP.ID_ESP = V.ID_ESP", connection);

        connection.Open();

        SqlDataReader reader = command.ExecuteReader();

        List<MyDvpt> list1 = new List<MyDvpt>();
        while (reader.Read())
        {
            MyDvpt dev = new MyDvpt();
            dev.NOM_EXP = reader[0].ToString();
            dev.NOM_ESP = reader[1].ToString();
            dev.NOM_VAR = reader[2].ToString();
            dev.SURF_PG = reader[3].ToString();
            dev.DD_CYCLE_PROD = reader[4].ToString();

            list1.Add(dev);
        }
        return new DataGridSource { maListe = list1.Skip(pageSize * pageNumber).Take(pageSize).ToList<MyDvpt>(), Total = list1.Count };            
    }

public class MyDvpt
    {
        public string NOM_EXP { get; set; }
        public string NOM_ESP { get; set; }
        public string NOM_VAR { get; set; }
        public string SURF_PG { get; set; }
        public string DD_CYCLE_PROD { get; set; }

        private string _total;
        public string Total
        {
            get { return _total; }
            set { _total = value; }
        }
    }
}

JS页面:

function onReady() {   
store = new Ext.data.JsonStore({
    autoLoad: true,
    pageSize: 20,
    pageNumber: 1,
    groupField: 'NOM_VAR',
    proxy: ({
        type: 'ajax',
        url: '../Service.asmx/GetMyDvpt3?pageSize=20 &pageNumber=1',
        reader: {
            type: 'json',
            root: 'd.maListe',
            totalProperty: 'd.Total'            
        },
        headers: {
            'Content-type': 'application/json'
        }
    }),
    fields: ['NOM_EXP', 'NOM_ESP', 'NOM_VAR', 'SURF_PG', 'DD_CYCLE_PROD']
});


store.loadPage(1);

var groupingFeature = Ext.create('Ext.grid.feature.Grouping', {
    groupHeaderTpl: 'NOM_VAR: {NOM_ESP} ({rows.length} enregistrement{[values.rows.length > 1 ? "s" : ""]})'
});

Ext.create('Ext.grid.Panel', {
    store: store,
    id:'grid',
    collapsible: true,
    frame: true,
    iconCls: 'icon-grid',
    features: [groupingFeature],
    columnLines: true,
    columns: [
                { dataIndex: 'NOM_EXP', header: 'NOM_EXP', flex: 1 },
                { dataIndex: 'NOM_ESP', header: 'NOM_ESP', flex: 1 },
                { dataIndex: 'NOM_VAR', header: 'NOM_VAR', flex: 1 },
                { dataIndex: 'SURF_PG', header: 'SURF_PG', flex: 1 },
                { dataIndex: 'DD_CYCLE_PROD', header: 'DD_CYCLE_PROD', flex: 1 }
            ],

    fbar: ['->', {
        text: 'Clear Grouping',
        iconCls: 'icon-clear-group',
        handler: function () {
            groupingFeature.disable();
        }
    }],
    renderTo: 'panel',
    viewConfig: {
        stripeRows: true
    },
    title: 'Dvpt Grid',
    width: 1220,
    height: 500,
    dockedItems: [{
        xtype: 'pagingtoolbar',
        store: store,
        dock: 'bottom',
        displayInfo: true
    }]
});
}
firebug中的

store.load()响应:

获取http://localhost:1508/Service.asmx/GetMyDvpt3?pa...22NOM_VAR%22%2C%22direction%22%3A%22ASC%22%7D%5D

{ “d”:{ “_ 型”: “+ MaquetteExtJs.Service DataGridSource”, “maListe”:[{ “ _type”: “+ MaquetteExtJs.Service MyDvpt”, “NOM_EXP” :“DECKERT”,“NOM_ESP”:“BléDurHiver”,“NOM_VAR”:“AMBRAL”,“SURF_PG”:“30000”,“DD_CYCLE_PROD”:“26/02/2003 00:00:00”,“总计“:空值}, ... {“_ _ type”:“MaquetteExtJs.Service + MyDvpt”,“NOM_EXP”:“DECKERT”,“NOM_ESP”:“BléDurHiver”,“NOM_VAR”:“SOLDUR”,“SURF_PG”:“25000”,“DD_CYCLE_PROD” :“06/03/2002 00:00:00”,“总计”:null}],“总计”:“100”}}

d Object {__ type =“MaquetteExtJs.Service + DataGridSource”,maListe = [20],Total =“100”}

2 个答案:

答案 0 :(得分:0)

目前您的回复是这样的......

{"d":{"_type":"MaquetteExtJs.Service+DataGridSource","maListe":[{"_type":"MaquetteExtJs.Service+MyDvpt","NOM_EXP":"DECKERT","NOM_ESP":"Blé Dur Hiver","NOM_VAR":"AMBRAL","SURF_PG":"30000","DD_CYCLE_PROD":"26/02/2003 00:00:00","Total":null}, ... {"__type":"MaquetteExtJs.Service+MyDvpt","NOM_EXP":"DECKERT","NOM_ESP":"Blé Dur Hiver","NOM_VAR":"SOLDUR","SURF_PG":"25000","DD_CYCLE_PROD":"06/03/2002 00:00:00","Total":null}],"Total":"100"}}

但它应该是这样的......

{"_type":"MaquetteExtJs.Service+DataGridSource","maListe":[{"_type":"MaquetteExtJs.Service+MyDvpt","NOM_EXP":"DECKERT","NOM_ESP":"Blé Dur Hiver","NOM_VAR":"AMBRAL","SURF_PG":"30000","DD_CYCLE_PROD":"26/02/2003 00:00:00","Total":null}, ... {"__type":"MaquetteExtJs.Service+MyDvpt","NOM_EXP":"DECKERT","NOM_ESP":"Blé Dur Hiver","NOM_VAR":"SOLDUR","SURF_PG":"25000","DD_CYCLE_PROD":"06/03/2002 00:00:00","Total":null}],"Total":"100"}

您还需要在JsonReader ..

中更新JsonStore配置
proxy: ({
    type: 'ajax',
    url: '../Service.asmx/GetMyDvpt3?pageSize=20 &pageNumber=1',
    reader: {
        type: 'json',
        root: 'maListe',
        totalProperty: 'Total'            
    }
}),

答案 1 :(得分:0)

尝试保留旧的json响应并存储root属性(root:'d.maListe')并修改totalProperty:'Total'