首页 > 解决方案 > 无法将动态 DataTable 绑定到 Grid.MVC

问题描述

我想使用Grid.MVC创建一个网格(表)。在这个网格中,我想绑定到一个 DataTable,这是我从中获得的表SELECT * FROM TABLE

看法

我的观点是这样的:

@model DataTable
@{
    ViewBag.Title = "ViewTable";
}
@using GridMvc.Html
@using System.Data
<h2>ViewTable</h2>
@Html.Grid(Model.Columns.Cast<IEnumerable<DataColumn>>()).Columns(columns =>
{
    columns.Add().RenderValueAs(a => Html.ActionLink("Edit", "Index"));
    foreach (DataColumn item in Model.Columns)
    {
        try
        {
            columns.Add(a => item).Titled(item.ColumnName);
        }
        catch (Exception)
        {

            throw;
        }
    }
})

这总是会抛出错误列item已存在于网格中(在第二项)。

我也试过用 afor loop而不是foreach.

for (int i = 0; i < Model.Columns.Count; i++)
{
    var idx = i;
    try
    {
        columns.Add(a => Model.Columns[idx]).Titled(Model.Columns[idx].ColumnName);
    }
    catch (Exception)
    {

        throw;
    }
}

在这里,我收到以下异常(错误消息):

网格不支持表达式 'a => value(ASP._Page_Views_Home_ViewTable_cshtml).Model.Columns.get_Item(value(ASP._Page_Views_Home_ViewTable_cshtml+<>c__DisplayClass4).idx)'

我怎样才能做到这一点?

标签: c#asp.net-mvcdatatablegrid

解决方案


您可以放置​​一个 if 条件并跳过添加该列。

try
{
    columns.Add(a => item).Titled(item.ColumnName);
    if (item.ColumnName == "Your Column name")
    {
        //skip that column
    }

}

推荐阅读