2

我很难让数据显示在 Telerik Grid 控件中。GraphDetail我在我的 ViewModel 中填充了一个列表对象。然后尝试使用Model.GraphDetail将数据绑定到视图中的网格。该项目编译并运行没有错误,网格确实显示但它是空的。如果我单步执行代码,我可以看到GraphDetail正在填充数据。

这是我的视图模型:

namespace AESSmart.ViewModels
{
    public class ACVoltagesTelerikGraph
    {
        public long InverterID { get; set; }
        public string InverterName { get; set; }
        public double? voltage_ac_a { get; set; }
        public double? voltage_ac_b { get; set; }
        public double? voltage_ac_c { get; set; }
        public DateTime recordTime { get; set; }
    }

    public class GraphsACVoltagesViewModel
    {
        public DateTime startingDate { get; set; }
        public DateTime endingDate { get; set; }

        public string HCSeries { get; set; }
        public List<ACVoltagesTelerikGraph> GraphDetail { set; get; }

        public void setLists()
        {
            //Code to populate InverterGoups and Inverters
        }

        public void setSeries()
        {
            //Code to populate GraphDetail and HCSeries
        }
    }
}

我的视图包含以下代码来显示网格:

@model AESSmart.ViewModels.GraphsACVoltagesViewModel

@(Html.Telerik().Grid(Model.GraphDetail)
    .Name("Grid")
    .DataBinding(dataBinding => dataBinding.Server())
    .Columns(columns =>
    {
        columns.Bound(o => o.InverterID).Title("InverterID").Width(25);
        columns.Bound(o => o.InverterName).Title("InverterName").Width(100);
        columns.Bound(o => o.voltage_ac_a).Title("Phase 1 Volts").Width(75);
        columns.Bound(o => o.voltage_ac_b).Title("Phase 2 Volts").Width(75);
        columns.Bound(o => o.voltage_ac_c).Title("Phase 3 Volts").Width(75);
        columns.Bound(o => o.recordTime).Title("Record Time").Width(150);
    })
    .Groupable()
    .Sortable()
    .Filterable()
    .Pageable(pager => pager.PageSize(3))
)

这是结果的屏幕截图: 在此处输入图像描述

正如您从屏幕截图中看到的那样,网格是空的。 那么,如何正确地将 ViewModel 中的 GraphDetail 列表绑定到网格?

4

2 回答 2

4

我实际上遇到了一个非常相似的问题。我无法根据列表填充图表。为了修复它,我不得不将列表更改为集合。尝试为您的方案使用以下代码:

public virtual ICollection<ACVoltagesTelerikGraph> GraphDetail { set; get; }

此外,看起来您正在将数据构建为 ViewModel 中更大类的一部分。因此,您的控制器不会专门处理网格正在使用的模型的创建。因此,“服务器绑定”可能对您不起作用。更不用说,您似乎只是想向用户显示数据,根本不需要他们修改它。所以我会像这样在客户端进行数据绑定:

@(Html.Telerik().Grid(Model.GraphDetail)
    .Name("Grid")
    .DataBinding(dataBinding => dataBinding
        .Ajax()
        .OperationMode(GridOperationMode.Client)           
    )
于 2012-09-18T15:31:21.910 回答
0

尝试改变这个:

@(Html.Telerik().Grid(Model.GraphDetail)

.DataBinding(dataBinding => dataBinding.Server())

对此:

@(Html.Telerik().Grid<ACVoltagesTelerikGraph>()

.DataBinding(dataBinding => dataBinding.Ajax().Select("ActionName", "ControllerName"))

于 2012-09-13T19:16:46.637 回答