Infragistics Grid:使用DataSet绑定

时间:2013-12-19 21:01:24

标签: c# asp.net-mvc infragistics

我正在开发一个创建分层网格的项目,但首先我要获取要渲染的初始数据集。我正在直接从Infragistics提供的关于这个主题的例子开始工作。

我的控制器:

public class BatchingController : Controller

    {
        DataAccess da = new DataAccess();
        private int currentUser = Lt.GetThisUsersCoId();

        [GridDataSourceAction]
        [ActionName("BatchList")]
        public ActionResult BatchList()
        {
            var ds = new DataSet("List");
            DataTable batchTable = BatchListDataTable();

            ds.Tables.Add(batchTable);

            return View("BatchList", ds);
        }

        private DataTable BatchListDataTable()
        {
            var contex = new LBPEntities();
            var dtData = new DataTable();
            dtData.Columns.Add("BatchNumber");
            dtData.Columns.Add("BatchGroupItemDate");
            dtData.Columns.Add("BatchComment");
            dtData.Columns.Add("NumberOfDocuments");
            dtData.Columns.Add("TotalTransfered");
            dtData.Columns.Add("NotTransfered");
            dtData.Columns.Add("CoId");

            DataRow row = null;
            var buildBatchList = (from x in contex.vwBatchLists
                                  where x.CoId == currentUser
                select x);

            foreach (var rowObj in buildBatchList)
            {
                row = dtData.NewRow();
                dtData.Rows.Add(rowObj.BatchNumber
                    , rowObj.BatchGroupItemDate
                    , rowObj.BatchComment
                    , rowObj.NumberOfDocuments
                    , rowObj.TotalTransfered
                    , rowObj.NotTransfered
                    , rowObj.CoId);
            }

            dtData.PrimaryKey = new[] { dtData.Columns["BatchNumber"] };
            return dtData;
        }
    }

我的观点:

@using Infragistics.Web.Mvc
@using System.Data

<!DOCTYPE html>

<html>
<head>
    <title></title>

    <!-- Ignite UI Required Combined CSS Files -->
    <link href="@Url.Content("~/igniteui/css/themes/infragistics/infragistics.theme.css")" rel="stylesheet" />
    <link href="@Url.Content("~/igniteui/css/structure/infragistics.css")" rel="stylesheet" />

    <script src="@Url.Content("~/js/modernizr.min.js")"></script>
    <script src="@Url.Content("~/js/jquery.min.js")"></script>
    <script src="@Url.Content("~/js/jquery-ui.min.js")"></script>

    <!-- Ignite UI Required Combined JavaScript Files -->
    <script src="@Url.Content("~/igniteui/js/infragistics.core.js")"></script>
    <script src="@Url.Content("~/igniteui/js/infragistics.lob.js")"></script>

</head>
<body>

    @(Html.Infragistics().Grid<System.Data.DataSet>()
        .ID("grid1")
        .Width("100%")
        .DefaultColumnWidth("150px")
        .AutoGenerateColumns(true)
        .AutoGenerateLayouts(true)
        .Features(features =>
        {
            features.Sorting().Type(OpType.Local).Mode(SortingMode.Single).Inherit(true);
            features.Paging().PageSize(5).Type(OpType.Remote).Inherit(false);
            features.Filtering().Type(OpType.Local).Inherit(true);
            features.Selection().Mode(SelectionMode.Row).MultipleSelection(true);
            features.GroupBy().Type(OpType.Local).Inherit(true);
            features.Hiding().Inherit(true);
        })
        .DataSource(Model)
        .DataSourceUrl(Url.Action("BatchList"))
        .DataBind()
        .Render()
    )
</body>
</html>

我收到一条错误消息,指出“数据源必须实现IQueryable”。但是,通过将DataSet传递给视图,它们提供的项目结构相同,并且不会抛出此类错误。

运行代码并检查模型时,我可以看到我的数据集确实填充了我正在寻找的内容: enter image description here

我必须遗漏一些基本的东西。我的理解是它将从我传递的数据集中构建网格。但是,我找不到它们声明引用的任何其他模型的位置以及它们设置列名称的任何位置。有什么想法吗?

0 个答案:

没有答案