Инфраструктура igGrid вызывает ошибку MissingManifestResourceException - PullRequest
0 голосов
/ 29 января 2019

Сведения о платформе: IgniteUI, C #, Asp.Net Core 2.0 (MVC), HTML5 и базовый JS

Мне нужна помощь, чтобы понять, что это за ошибка и почему она возникает.Я попытался найти его в Google, но единственная информация, которую я нашел, указывает на вещи, загружаемые не по порядку.Мы используем 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>


1 Ответ

0 голосов
/ 29 января 2019

Мы поняли это.У меня включена фильтрация для сетки в свойствах с этим

            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();
...