在 MVC 中执行 Kendo 网格时从模型中检索数据
Retrieving data from Model while doing a Kendo grid in MVC
这是模型代码:
namespace WEB02.Models
{
public class GridDatatable
{
public DataTable Table { get; set; }
}
}
这是包含 kendo 网格的视图代码:
@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>
控制器代码:
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;
}
}
}
当我尝试浏览 URl /Configuration/Index
我在模型中收到错误,好像模型在模型文件夹中不可用,即使它已经完成。
我也有一些问题,通过在浏览器上浏览从控制器调用视图,它给出了一个错误,该视图在文件夹中不可用,而我已经完成视图并将其连接到 ActionResult 方法在控制器中。
我无法 post 错误的屏幕截图,因为我必须有超过 10 个愚蠢的观点!!!!
无论如何,错误是
“/”应用程序中的服务器错误。
编译错误
描述:编译服务此请求所需的资源时出错。请查看以下特定错误详细信息并适当修改您的源代码。
编译器错误消息:CS0234:类型或命名空间名称 'GridDatatable' 在命名空间 'WEB02.Models' 中不存在(是否缺少程序集引用?)
来源错误:
第 38 行:
第 39 行:
第 40 行:publicclass_Page_Views_Configuration_Index_cshtml:System.Web.Mvc.WebViewPage{
第 41 行:
第 42 行:#line hidden
源文件:c:\Users\ABK1LO\AppData\Local\Temp\Temporary ASP.NET Files\vs\b7cd7403\dfc9d84e\App_Web_index.cshtml.edf51036.0r4hbktj.0.cs 行:40
显示详细的编译器输出:
显示完整编译源:
版本信息:Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.34249
此问题的解决方案是将模型传递给视图并使用模型形成网格的列,然后通过从控制器中的方法读取的数据源获取数据。
kendo 网格视图如下:
@(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")
)
))
这是模型代码:
namespace WEB02.Models
{
public class GridDatatable
{
public DataTable Table { get; set; }
}
}
这是包含 kendo 网格的视图代码:
@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>
控制器代码:
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;
}
}
}
当我尝试浏览 URl /Configuration/Index 我在模型中收到错误,好像模型在模型文件夹中不可用,即使它已经完成。
我也有一些问题,通过在浏览器上浏览从控制器调用视图,它给出了一个错误,该视图在文件夹中不可用,而我已经完成视图并将其连接到 ActionResult 方法在控制器中。
我无法 post 错误的屏幕截图,因为我必须有超过 10 个愚蠢的观点!!!! 无论如何,错误是
“/”应用程序中的服务器错误。
编译错误
描述:编译服务此请求所需的资源时出错。请查看以下特定错误详细信息并适当修改您的源代码。
编译器错误消息:CS0234:类型或命名空间名称 'GridDatatable' 在命名空间 'WEB02.Models' 中不存在(是否缺少程序集引用?)
来源错误:
第 38 行:
第 39 行:
第 40 行:publicclass_Page_Views_Configuration_Index_cshtml:System.Web.Mvc.WebViewPage{
第 41 行:
第 42 行:#line hidden
源文件:c:\Users\ABK1LO\AppData\Local\Temp\Temporary ASP.NET Files\vs\b7cd7403\dfc9d84e\App_Web_index.cshtml.edf51036.0r4hbktj.0.cs 行:40
显示详细的编译器输出:
显示完整编译源:
版本信息:Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.34249
此问题的解决方案是将模型传递给视图并使用模型形成网格的列,然后通过从控制器中的方法读取的数据源获取数据。
kendo 网格视图如下:
@(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")
)
))