ext.net mvc gridpanel 使用具有复杂模型类型的数据源

Posted

技术标签:

【中文标题】ext.net mvc gridpanel 使用具有复杂模型类型的数据源【英文标题】:ext.net mvc gridpanel using datasource with complex model type 【发布时间】:2014-05-16 15:03:56 【问题描述】:

我无法让部分视图正常工作。局部视图中嵌入了一个网格面板以及一些其他文本框。我有一个自定义模型类,其中包含一些字符串属性来填充文本框和一个自定义对象列表来填充网格。我正在使用 .DataSource(Model.MyList) 填充网格面板,但我不断收到空引用异常 - 对象未设置为对象的实例。如果我删除数据源行,它会正确呈现(显然网格中没有任何数据) - 其他字段已正确填充。

这里是一些示例代码 -

@(x.FormPanel()
    .ID("MyDetailsPanel")
    .Title("My Details")
        .Frame(true)
        .Height(525)
        .Width(425)
        .Margin(5)        
        .Items(
            x.TextFieldFor(m => m.Title)
                .FieldLabel("Title")
                .AnchorHorizontal("100%"),
            x.TextField()
                .FieldLabel("Number")
                .AnchorHorizontal("100%"),
            x.ComboBox()
                .FieldLabel("Type")
                .AnchorHorizontal("100%"),


                x.GridPanel()
                    .Title("My Grid")
                    .Frame(true)
                    .Width(400)
                    .Height(350)
                    .Store(
                        x.Store()
                            .AutoLoad(true)
                            .ID("MyStore")
                            .DataSource(Model.MyList)
                            .Model(
                                x.Model()
                                    .Fields(
                                        x.ModelField().Name("Number").Type(ModelFieldType.String),
                                        x.ModelField().Name("Title").Type(ModelFieldType.String)
                                    )
......

这是模型 -

public class MyDetailsViewModel
    
        public int Id  get; set; 
        public string Title  get; set; 

        public  List<SomeDto> MyList  get; set; 
    

这里是控制器 -

public ActionResult MyDetailsPartial(string id)
        
            var vm = new MyDetailsViewModel();
            vm.MyList = new List<SomeDto>();
            if(id != null)
            
                vm.Title = "new title";
                vm.MyList.Add(new SomeDto  Number = "234", Title = "abcd");
                        

            ViewData.Model = vm;

            var pvr = new Ext.Net.MVC.PartialViewResult
            
                ViewData = this.ViewData

            ;
            return pvr;         
        

我不明白为什么我不能将自定义列表从模型传递到网格面板的数据源中。

任何想法都会很棒。

【问题讨论】:

【参考方案1】:

我能够通过使用 GridPanelFor 来完成这项工作。通过使用它,视图按预期呈现和更新。

谢谢

【讨论】:

以上是关于ext.net mvc gridpanel 使用具有复杂模型类型的数据源的主要内容,如果未能解决你的问题,请参考以下文章

Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法

Ext.Net学习笔记15:Ext.Net GridPanel 汇总(Summary)用法

Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法

Ext.Net学习笔记16:Ext.Net GridPanel 折叠/展开行

Ext.Net学习笔记18:Ext.Net 可编辑的GridPanel

如何刷新 Ext.NET GridPanel 的内容?