Asp.net mvc 4 在MVC中执行剑道网格时从模型检索数据

Asp.net mvc 4 在MVC中执行剑道网格时从模型检索数据,asp.net-mvc-4,razor,model-view-controller,kendo-grid,Asp.net Mvc 4,Razor,Model View Controller,Kendo Grid,这是型号代码: namespace WEB02.Models { public class GridDatatable { public DataTable Table { get; set; } } } 这是包含剑道网格的视图代码: @using Kendo.Mvc.UI @model WEB02.Models.GridDatatable @{ ViewBag.Title = "Index"; } <h2>Index</h2> &

这是型号代码:

namespace WEB02.Models
{
public class GridDatatable
{

    public DataTable Table { get; set; }
}
}
这是包含剑道网格的视图代码:

@using Kendo.Mvc.UI
@model WEB02.Models.GridDatatable
@{
    ViewBag.Title = "Index";
    }
   <h2>Index</h2>
   <div id="divGrid">

  @(Html.Kendo().Grid<dynamic>()
.Name("TTGrid")
.Columns(columns =>
{
    foreach (System.Data.DataColumn c in Model.Table.Columns)
    {
        columns.Bound(c.ColumnName).EditorTemplateName("String");
    }
  })
.Pageable(pageable => pageable.ButtonCount(10))
.Sortable(sortable => sortable
        .AllowUnsort(true)
        .SortMode(GridSortMode.MultipleColumn))

  .Editable(editable => editable.Enabled(true)
  .Mode(GridEditMode.InLine))

.Scrollable()
.DataSource(dataSource => dataSource
    .Ajax()
    .Events(events => events.Error("error_handler"))
    .Model(model =>
    {
        //Define the model
        foreach (System.Data.DataColumn column in Model.Table.Columns)
        {
            model.Field(column.ColumnName, column.DataType);
            model.Id("Id");
        }
    })
    .Read(read => read.Action("griddata", "Configuration"))

)

    .Filterable(ftb => ftb.Mode(GridFilterMode.Menu))
        .Pageable(pageable => pageable
        .Refresh(true)

        .PageSizes(new int[] { 10, 100, 1000, 10000, 100000, 1000000 })
        .ButtonCount(10)
    )
    .Resizable(resizing => resizing.Columns(true))
  )
</div>
@使用Kendo.Mvc.UI
@模型WEB02.Models.GridDatatable
@{
ViewBag.Title=“Index”;
}
指数
@(Html.Kendo().Grid())
.名称(“TTGrid”)
.列(列=>
{
foreach(Model.Table.Columns中的System.Data.DataColumn c)
{
columns.Bound(c.ColumnName).EditorTemplateName(“字符串”);
}
})
.Pageable(Pageable=>Pageable.ButtonCount(10))
.Sortable(Sortable=>Sortable
.AllowUnsort(真)
.SortMode(GridSortMode.MultipleColumn))
.Editable(可编辑=>Editable.Enabled(true)
.Mode(GridEditMode.InLine))
.Scrollable()
.DataSource(DataSource=>DataSource
.Ajax()
.Events(Events=>Events.Error(“错误处理程序”))
.Model(Model=>
{
//定义模型
foreach(Model.Table.Columns中的System.Data.DataColumn列)
{
model.Field(column.ColumnName,column.DataType);
模型Id(“Id”);
}
})
.Read(Read=>Read.Action(“griddata”、“配置”))
)
.Filterable(ftb=>ftb.Mode(GridFilterMode.Menu))
.Pageable(Pageable=>Pageable
.刷新(真)
.PageSizes(新int[]{10100100010000000001000000})
.按钮计数(10)
)
.resizeable(resize=>resize.Columns(true))
)
控制器代码:

    namespace WEB02.Controllers
{
public class ConfigurationController : Controller
{
    //
    // GET: /Configuration/
    public ActionResult Index()
    {
        GridDatatable gridTable = new GridDatatable();
        gridTable.Table = new DataTable();
        gridTable.Table.Columns.Add("Name");
        return View("Index",gridTable);
    }

    public ActionResult _WorkflowPartial()
    {
        return PartialView();
    }

    public ActionResult griddata([DataSourceRequest] DataSourceRequest request)
    {
        GridDatatable gridTable = new GridDatatable();
        gridTable.Table = new DataTable();
        gridTable.Table.Columns.Add("Name", typeof(string));
        List<string> Griddetails;
        Griddetails = RxMUaClient.Browse("2", "127.0.0.1:48030", "Mls.Work.Triggers");
        gridTable.Table = ConvertListToDataTable(Griddetails);       
        if (request.Aggregates.Any())
        {
            request.Aggregates.Each(agg => agg.Aggregates.Each(a =>
            {
                a.MemberType = gridTable.Table.Columns[agg.Member].DataType;
            }));
        }
        return Json(gridTable.Table.ToDataSourceResult(request));

    }
    static DataTable ConvertListToDataTable(List<string> list)
    {
        // New table.
        DataTable table = new DataTable();

        table.Columns.Add("Name");

        int rows = list.Count;
        for (int i = 0; i <= rows - 1; i++)
        {

            table.Rows.Add(list[i]);
        }

        return table;
    }


}
}
namespace WEB02.Controllers
{
公共类配置控制器:控制器
{
//
//获取/配置/
公共行动结果索引()
{
GridDatatable gridTable=新的GridDatatable();
Table=newdatatable();
gridTable.Table.Columns.Add(“名称”);
返回视图(“索引”,网格表);
}
public ActionResult_WorkflowPartial()
{
返回PartialView();
}
公共操作结果griddata([DataSourceRequest]DataSourceRequest请求)
{
GridDatatable gridTable=新的GridDatatable();
Table=newdatatable();
gridTable.Table.Columns.Add(“Name”,typeof(string));
列出详细资料;
Griddetails=RxMUaClient.Browse(“2”、“127.0.0.1:48030”、“Mls.Work.Triggers”);
表格=ConvertListToDataTable(Griddetails);
if(request.Aggregates.Any())
{
request.Aggregates.Each(agg=>agg.Aggregates.Each(a=>
{
a、 MemberType=gridTable.Table.Columns[agg.Member].DataType;
}));
}
返回Json(gridTable.Table.ToDataSourceResult(请求));
}
静态数据表ConvertListToDataTable(列表)
{
//新桌子。
DataTable=新的DataTable();
表.列.添加(“名称”);
int rows=list.Count;

对于(int i=0;i,此问题的解决方案是将模型的一个属性传递给视图,并使用模型形成网格的列,然后通过从控制器中的方法读取的数据源获取数据

剑道网格视图如下所示:

@(Html.Kendo().Grid<dynamic>()
.Name("StatusGrid")
//.HtmlAttributes(new { style="width:50%;" })
.Columns(columns =>
{
    foreach (System.Data.DataColumn c in Model.GridStatus.Columns)
    {
        columns.Bound(c.ColumnName).EditorTemplateName("String");
    }
})
.DataSource(dataSource => dataSource
    .Ajax()
    .Events(events => events.Error("error_handler"))
    .Model(model =>
    {
        foreach (System.Data.DataColumn column in Model.GridStatus.Columns)
        {
            model.Field(column.ColumnName, column.DataType);
            model.Id("Id");
        }
    })
    .Read(read =>

        read.Action("StatusGeneric", "Configuration")
    )
))
@(Html.Kendo().Grid())
.Name(“状态网格”)
//.HtmlAttributes(新的{style=“width:50%;”})
.列(列=>
{
foreach(Model.GridStatus.Columns中的System.Data.DataColumn c)
{
columns.Bound(c.ColumnName).EditorTemplateName(“字符串”);
}
})
.DataSource(DataSource=>DataSource
.Ajax()
.Events(Events=>Events.Error(“错误处理程序”))
.Model(Model=>
{
foreach(Model.GridStatus.Columns中的System.Data.DataColumn列)
{
model.Field(column.ColumnName,column.DataType);
模型Id(“Id”);
}
})
.Read(Read=>
read.Action(“StatusGeneric”、“Configuration”)
)
))

此问题的解决方案是将模型的数据传递给视图,并使用模型形成网格的列,然后通过从控制器中的方法读取的数据源获取数据

剑道网格视图如下所示:

@(Html.Kendo().Grid<dynamic>()
.Name("StatusGrid")
//.HtmlAttributes(new { style="width:50%;" })
.Columns(columns =>
{
    foreach (System.Data.DataColumn c in Model.GridStatus.Columns)
    {
        columns.Bound(c.ColumnName).EditorTemplateName("String");
    }
})
.DataSource(dataSource => dataSource
    .Ajax()
    .Events(events => events.Error("error_handler"))
    .Model(model =>
    {
        foreach (System.Data.DataColumn column in Model.GridStatus.Columns)
        {
            model.Field(column.ColumnName, column.DataType);
            model.Id("Id");
        }
    })
    .Read(read =>

        read.Action("StatusGeneric", "Configuration")
    )
))
@(Html.Kendo().Grid())
.Name(“状态网格”)
//.HtmlAttributes(新的{style=“width:50%;”})
.列(列=>
{
foreach(Model.GridStatus.Columns中的System.Data.DataColumn c)
{
columns.Bound(c.ColumnName).EditorTemplateName(“字符串”);
}
})
.DataSource(DataSource=>DataSource
.Ajax()
.Events(Events=>Events.Error(“错误处理程序”))
.Model(Model=>
{
foreach(Model.GridStatus.Columns中的System.Data.DataColumn列)
{
model.Field(column.ColumnName,column.DataType);
模型Id(“Id”);
}
})
.Read(Read=>
read.Action(“StatusGeneric”、“Configuration”)
)
))

因此,我假设由于某种形式的动态列设置,您正试图绑定到一个
数据表
(再次假设这将用作一个通用
控件
,因为缺少更好的单词)您的列名中是否有空格?页面的模型是如何初始化的。您能否提供索引和读取操作的控制器代码。@David如果没有,列名没有空格,我只处理一列。我在代码中添加了控制器的代码。谢谢您的第一件事这是'model.Id(“Id”);`如果您的数据集中没有名为
Id
的列,请将其从列设置中删除。这可能会引发一个错误。上传,以便您下次可以发布该屏幕截图!@ThomasKoelle谢谢:DSo我假设您由于某种形式的动态列设置而尝试绑定到
数据表
(再次假设这将被用作一个通用的
控件
,因为缺少一个更好的词)您的列名中是否有空格?页面的模型是如何初始化的。能否提供索引和读取操作的控制器代码。@David如果没有,列名没有空格,我只处理一列。我在代码中添加了控制器代码。谢谢