首页 > 解决方案 > Infragistics igGrid 导致 MissingManifestResourceException 错误

问题描述

平台详细信息:IgniteUI、C#、Asp.Net Core 2.0 (MVC)、HTML5 和基本 JS

我需要帮助来理解这个错误是什么以及为什么会被抛出。我试过用谷歌搜索它,但我发现的唯一信息指向加载乱序的东西。我们在其他地方使用 iggrid 没有问题,所以我认为库和程序集(和排序)已经涵盖了。错误内容如下:

“MissingManifestResourceException:找不到任何适合指定区域性或中性区域性的资源。确保“Infragistics.Web.Mvc.Resources.CommonStrings.resources”在编译时正确嵌入或链接到程序集“Infragistics.Web.AspNetCore”中,或者所需的所有附属程序集都是可加载和完全签名的。”

该页面使用一个文件并以网格的形式提供反馈。计算反馈,并通过视图模型传递到页面。这是视图模型:

namespace GCFF.Web.Models
{
    public class MassUploadViewModel
    {
        public int? recordsRead { get; set; }
        public int recordsModified { get; set; }
        public int recordsUnmodifiedCancelSAP { get; set; }
        public int recordsUnmodifiedAmount { get; set; }
        public int failedMultiple { get; set; }
        public int failedNoMatch { get; set; }
        public GridModel FailedItemsGrid { get; set; }
    }
}

在我的控制器中,我设置了这些属性中的每一个,调用一个方法来设置网格属性,我构建了一个列表并将其设置为数据源,然后返回模型。这是(部分)该代码:

var failedRequestsList = new List<MassUploadRequest>();
foreach (MassUploadRequest m in requests.Where(t => t.Response == "Failed - Matched Multiple")) {
    failedRequestsList.Add(m);
}

model.recordsRead = requests.Count();
model.failedMultiple = requests.Count(t => t.Response == "Failed - Matched Multiple");

model.FailedItemsGrid = SetMUGridProperties();
model.FailedItemsGrid.DataSource = failedRequestsList;

return View(model);

SetMUGridProperties 方法设置 ifGrid 的参数,如下:

public GridModel SetMUGridProperties()
        {
            GridModel grdmodel = new GridModel();
            grdmodel.AutoGenerateColumns = false;
            grdmodel.Width = "100%";
            grdmodel.Height = "445px";
            grdmodel.DefaultColumnWidth = "*";
            grdmodel.PrimaryKey = "RequestID";
            grdmodel.ResponseDataKey = "Records";
            grdmodel.RenderCheckboxes = false;
            grdmodel.AutoCommit = false;
            grdmodel.EnableUTCDates = true;
            GridColumn RequestID = new GridColumn();
            RequestID.Key = "RequestID";
            RequestID.HeaderText = "Request ID";
            RequestID.DataType = "number";
            RequestID.Width = "90px";
            GridColumn RTC = new GridColumn();
            RTC.Key = "rtcCode";
            RTC.HeaderText = "RTC";
            RTC.DataType = "string";
            RTC.Width = "85px";
            GridColumn TemplateID = new GridColumn();
            TemplateID.Key = "TemplateID";
            TemplateID.HeaderText = "Template ID";
            TemplateID.DataType = "number";
            TemplateID.Width = "90px";
            GridColumn FCItemDate = new GridColumn();
            FCItemDate.Key = "FCItemDate";
            FCItemDate.HeaderText = "Date";
            FCItemDate.DataType = "date";
            FCItemDate.DateDisplayType = DateDisplayType.UTC;
            FCItemDate.Width = "95px";
            FCItemDate.ColumnCssClass = "borderright";
            GridColumn Amount = new GridColumn();
            Amount.Key = "Amount";
            Amount.HeaderText = "Amount";
            Amount.DataType = "number";
            Amount.Format = "0.00";
            GridColumn AmountTMSUpload = new GridColumn();
            AmountTMSUpload.Key = "AmountTMSUpload";
            AmountTMSUpload.HeaderText = "Amount - TMS Upload";
            AmountTMSUpload.DataType = "number";
            AmountTMSUpload.Format = "0.00";
            GridColumn Response = new GridColumn();
            Response.Key = "Response";
            Response.HeaderText = "Failed Reason";
            Response.DataType = "string";
            grdmodel.Columns.Add(RequestID);
            grdmodel.Columns.Add(RTC);
            grdmodel.Columns.Add(TemplateID);
            grdmodel.Columns.Add(FCItemDate);
            grdmodel.Columns.Add(Amount);
            grdmodel.Columns.Add(AmountTMSUpload);
            grdmodel.Columns.Add(Response);
            GridSorting sorting = new GridSorting();
            sorting.Mode = SortingMode.Single;
            sorting.ColumnSettings = new List<ColumnSortingSetting>() { new ColumnSortingSetting() { ColumnKey = "Response", AllowSorting = false } };
            grdmodel.Features.Add(sorting);
            GridResizing resizing = new GridResizing();
            resizing.AllowDoubleClickToResize = true;
            grdmodel.Features.Add(resizing);
            GridFiltering filtering = new GridFiltering();
            filtering.ColumnSettings = new List<ColumnFilteringSetting>() { new ColumnFilteringSetting() { ColumnKey = "RequestID", AllowFiltering = false } };
            grdmodel.Features.Add(filtering);

            return grdmodel;
        }

最后,这是(大部分)与这一切相关的页面代码。

@using Infragistics.Web.Mvc
@model GCFF.Web.Models.MassUploadViewModel
@{
    ViewData["Title"] = "Mass Upload";
    Layout = "_Layout";
}

@using (Html.BeginForm("MassUpload", "Forecast", FormMethod.Post, new { @enctype = "multipart/form-data" }))
{
    @Html.AntiForgeryToken()
    ~upload input
    ~submit button
    ~feedback section
    @(Html.Infragistics().Grid(Model.FailedItemsGrid))
}
<script type="text/javascript">

    $(function () {
        var recordsRead = '@Model.recordsRead';

        if (recordsRead == '') {
            $('#uploadresults').hide();
        }
        else {
            $('#recordsRead').text('@Model.recordsRead');
            $('#failedMultiple').text('@Model.failedMultiple');
        }
    });
</script>


标签: asp.net-core-mvcinfragisticsiggrid

解决方案


我们想通了。我已经在属性中为网格打开了过滤

            GridFiltering filtering = new GridFiltering();
            filtering.ColumnSettings = new List<ColumnFilteringSetting>() { new ColumnFilteringSetting() { ColumnKey = "RequestID", AllowFiltering = false } };
            grdmodel.Features.Add(filtering);

但是数据源对象不是可查询的格式,因此导致 igGrid 失败。这是修复(AsQueryable())

            model.FailedItemsGrid.DataSource = failedRequestsList.AsQueryable();

推荐阅读