簡體   English   中英

在EXT表單面板中填充EXT JS商店

[英]Populating EXT JS Store in a EXT form Panel

使用ASP.NET MVC操作方法將Json返回到視圖,以便以EXT JS形式顯示數據。 我始終在everythingLoaded函數中將“ record”值獲取為null,即使我可以看到action方法在Ext.Create之后返回JSON數據。 我試圖實現的是將firstName和lastName參數從action方法傳遞回面板內的文本框。 你能幫我嗎? 下面是代碼

-> App.JS

Ext.onReady(function() {

  //Define Store  
    Ext.define('StudentModel', {
        extend: 'Ext.data.Model',
        idProperty: 'Id',
        fields: [
            { name: 'Id', type: 'int' },
            { name: 'firstName', type: 'string' },
            { name: 'lastName', type: 'string' },
            { name: 'birthDate', type: 'date' },
            { name: 'street', type: 'string' },
            { name: 'apartment', type: 'string' },
            { name: 'city', type: 'string' },
            { name: 'state', type: 'string' },
        ],
        validations: [{
            type: 'presence',
            field: 'firstName'
        }]
    });

var store = Ext.create('Ext.data.Store', {
    model: 'StudentModel',
    storeId: 'StudentStoreId',
    proxy: {
        type: 'ajax',
        url: '/Home/GetStudentSubmissions',
        reader: {
            type: 'json',
            rootProperty: 'data'
        }
    },
    autoLoad: { callback: everythingLoaded } 
 }
);

function everythingLoaded()
{
    var record = store.getAt(0);                
     //Here record is always null
    Ext.form('MyPanel').getForm().loadRecord(record); 
}

Ext.define('StudentView', {
    extend: 'Ext.form.Panel',
    id: 'MyPanel',
    alias: 'widget.StudentView',
    title: 'Student Information',
    resizable: false,
    collapsible: true,
    store:store,
    bodyPadding: '5',
    buttonAlign: 'center',
    border: false,
    trackResetOnLoad: true,
    layout: {
        type: 'vbox'
    },
    defaults: {
        xtype: 'textfield',
        msgTarget: 'side',
        labelAlign: 'top',
        labelStyle: 'font-weight:bold'
    },
    items: [{
        xtype: 'fieldcontainer',
        layout: 'hbox',
        defaultType: 'textfield',
        width: '100%',
        fieldDefaults: {
            labelAlign: 'top',
            labelStyle: 'font-weight:bold'
        },
    items: [{
        fieldLabel: 'First Name',
        name: 'firstName',
        allowBlank: false
    }, {
        fieldLabel: 'Last Name',
        name: 'lastName',
        allowBlank: false
        }]
    }]        
});

 //Here count is always 0
var i = store.getCount();

Ext.create('widget.StudentView', {
    renderTo: 'studentMasterForm'
});

});

-> C#動作方法

  public JsonResult GetStudentSubmissions()
    {
        return Json(GetStudents(), JsonRequestBehavior.AllowGet);
    }
    public Student GetStudents()
    {
        Student studobj = new Student();

        studobj.Id = 1;
        studobj.firstName = "Aravind";
        studobj.lastName = "R";
        studobj.state = "NJ";
        studobj.street = "Center Grove";
        studobj.birthDate = new DateTime(1989, 6, 6);
        studobj.apartment = "DD8";
        studobj.city = "XYZ";

        return studobj;

    }
}

->學生模型課

公共班級學生{公共int ID {獲取; 組; }公用字符串firstName {get; 組; }公用字符串lastName {get; 組; }公開的DateTime birthDate {get; 組; }公共街區{ 組; }公共字串公寓{get; 組; }公共字符串城市{get; 組; }公共字符串狀態{get; 組; }}

您的C#代碼返回一個對象“ Student”,但應該返回一個對象,該對象具有一個學生數組作為其“數據”屬性。

您需要返回此類型的對象:

public class ExtStore
{
    public List<Student> data = new List<Student>();
}

例如:

public ExtStore GetStudents()
{
    Student studobj = new Student();

    studobj.Id = 1;
    studobj.firstName = "Aravind";
    studobj.lastName = "R";
    studobj.state = "NJ";
    studobj.street = "Center Grove";
    studobj.birthDate = new DateTime(1989, 6, 6);
    studobj.apartment = "DD8";
    studobj.city = "XYZ";

    ExtStore exs = new ExtStore();
    exs.data.Add(studobj);

    return exs;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM