如何在 GridPanel Ext.net Razor 中按名称获取值

Posted

技术标签:

【中文标题】如何在 GridPanel Ext.net Razor 中按名称获取值【英文标题】:How can get Value by name in GridPanel Ext.net Razor 【发布时间】:2012-10-23 09:38:09 【问题描述】:

我尝试使用 javascript 从 Ext.net 中的 GridPanel 获取值,我使用 Hanlder 在 Javascript 函数中调用 gaSelectBind() 但它返回 [object NodeList]。

<script type="text/javascript">
    var nodelist;
    nodelist = document.getElementsByName('grid-device-name')
    function gaSelectBind() 
        App.ga_device_name.setValue(nodelist);
    ;
</script>

这是我的数据对象:

DateTime now = DateTime.Now;
    var dataDevice = new object[]
            
                new object[] null, false , "35 RUTA", now, null , null ,
                new object[] null, false , "770SBW", now, null , null ,
                new object[] null, false , "CORSA", now, null , null ,
                new object[] null, false , "icon2010", now, null , null ,
                new object[] null, false , "MouGL", now, null , null ,
                new object[] null, false , "mt90", now, null , null ,
                new object[] null, false , "MT90-Renny", now, null , null ,
                new object[] null, false , "MVT600-Fuel1111", now, null , null 
            ;

我使用文本字段来设置值

itemchildpan1.Add(html.X().TextField().FieldLabel("Device Name").ID("ga_device_name"));

我的网格面板:

.GridPanel().Title("Device")
.Store(store =>
//Load store from Data Object----
    store.Add(Html.X().Store().ID("Storer1")
                    .AutoLoad(true)
                    .Model(model => model.Add(Html.X().Model()
                        .Fields(fields =>
                        
                            fields.Add(Html.X().ModelField().Name("grid-alarm"));
                            fields.Add(Html.X().ModelField().Name("grid-check"));
                            fields.Add(Html.X().ModelField().Name("grid-device-name"));
                            fields.Add(Html.X().ModelField().Name("grid-lastupdate"));
                            fields.Add(Html.X().ModelField().Name("grid-status"));
                            fields.Add(Html.X().ModelField().Name("grid-retry"));
                        
                        )))
                    .DataSource(dataDevice)
                    );
)

.ColumnModel(columnModel =>
//Add Data Object from store to Column
    columnModel.Columns.Add(Html.X().Column().Text("").DataIndex("grid-alarm").Width(30));
    columnModel.Columns.Add(Html.X().CheckColumn().TdCls("td-non-img-checkcolum").DataIndex("grid-check").Width(30).Editable(true));
    columnModel.Columns.Add(Html.X().Column().Text("Devide Name").DataIndex("grid-device-name"));
    columnModel.Columns.Add(Html.X().Column().Text("Latest Update").DataIndex("grid-lastupdate").Width(120));
    columnModel.Columns.Add(Html.X().Column().Text("Status").DataIndex("grid-status"));
    columnModel.Columns.Add(Html.X().Column().Text("Retry").DataIndex("grid-retry"));
)
.SelectionModel(gaSelectModel =>
//Listener Event Handler use to call "gaSelectBind()" Function
    gaSelectModel.Add(Html.X().RowSelectionModel().Listeners(garowSelectListen =>
    
        garowSelectListen.Select.Handler = "gaSelectBind();";
    ));
)

我无法从网格中获取价值,它显示

[object NodeList]

【问题讨论】:

【参考方案1】:

您需要进行两项更改:

    替换以下行:

    // Old
    garowSelectListen.Select.Handler = "gaSelectBind();";
    
    // New
    garowSelectListen.Select.Fn = "gaSelectBind";
    

    将您的&lt;script&gt; 替换为以下内容:

    <script type="text/javascript">
        var gaSelectBind = function (item, record, index) 
            App.ga_device_name.setValue(record.data.grid-device-name);
        ;
    </script>
    

可以从您的示例中删除以下代码,因为它不起作用:

// Remove this code...
var nodelist;
nodelist = document.getElementsByName('grid-device-name')

希望这会有所帮助。

【讨论】:

谢谢你的帮助,我改了 App.ga_device_name.setValue(record.data.grid-device-name);到 App.ga_device_name.setValue(record.data['grid-device-name']);它现在可以工作了。

以上是关于如何在 GridPanel Ext.net Razor 中按名称获取值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ext.net 的 gridpanel 的组件列中显示/隐藏项目?

Ext.Net学习笔记17:Ext.Net GridPanel Selection

如何在 GridPanel Ext.net Razor 中按名称获取值

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

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

如何从 Ext.net 3 剃须刀引擎列表中填充 GridPanel?