【问题标题】:jqGrid filter dropdownlist not working with special charactersjqGrid过滤器下拉列表不适用于特殊字符
【发布时间】:2019-08-12 03:37:02
【问题描述】:

当使用 jqGrid 内置的列搜索功能时,dropdwonlist 拒绝显示 ç、Ë 等特殊字符。由于某种原因,它们被分成两行。这意味着如果我们使用“Dfëstuç”这个词,下拉列表或者更确切地说是选项列表将按如下方式生成:

  • Dfë
  • 未定义
  • stuç
  • 未定义

我的代码如下:

@model WS.ViewModels.CaseViewModel
@{
    ViewBag.Title = "";
    Layout = "~/Views/Shared/_Layout.cshtml";

<meta charset="utf-8"> 


    string idVendbanimiSelectValues = ":";


    foreach (var item in Model.NomenklaturaVendbanimiDropDownListData.OrderBy(n => n.IdVendbanimi))
    {
        idVendbanimiSelectValues += ";" + item.IdVendbanimi + ":" + item.EnPershkrimi;
    }
}

@section AdditionalCss {
    @Styles.Render("~/Content/Styles/ui.jqgrid.min.css")
}

@section AdditionalJavaScript {
    @Scripts.Render("~/bundles/jqgrid")
    @Scripts.Render("~/Scripts/jqgrid-listsearch.js")
    @Scripts.Render("~/Scripts/jquery.searchFilter.min.js")

    <script type="text/javascript">
        $(function () {
            var idVendbanimiSelectValues = "@idVendbanimiSelectValues";

            $('#list-grid').jqGrid({
                url: '/Lenda/GridDataWithFilters/',
                datatype: 'json',
                mtype: 'GET',
                colNames: ['CaseId','IdVendbanimi'],
                colModel: [
                    { name: 'CaseId', index: 'CaseId', align: 'right' },
                    { name: 'IdVendbanimi', index: 'IdVendbanimi', align: 'left', stype: 'select', edittype: 'select', editoptions: { value: idVendbanimiSelectValues },  autoencode: false }
                ],
                pager: $('#list-pager'),
                rowNum: 10,
                rowList: [5, 10, 20, 50],
                sortname: 'CaseId',
                sortorder: "asc",
                viewrecords: true,
                height: '100%',
                width: '1200',
                ignoreCase: true,
                autoencode: true,

            }).jqGrid('navGrid', '#list-pager', { edit: false, add: false, del: false, search: false, refresh: false });

            $('#list-grid').jqGrid('filterToolbar', { stringResult: true, searchOnEnter: false, beforeSearch: function () {
                // verify entered data before searching
                var postData = $('#list-grid').jqGrid('getGridParam', 'postData');
                var searchData = $.parseJSON(postData.filters);
                var isThereValidationErrors = false;
                var validationErrors = "";

                for (var iRule = 0; iRule < searchData.rules.length; iRule++) {
                    var enteredValue = searchData.rules[iRule].data;

                    if (searchData.rules[iRule].field == "CaseId" && !isNumeric(enteredValue)) {
                        validationErrors += "  Id Lenda must be a valid number.";
                        isThereValidationErrors = true;
                    }
                }

                if(isThereValidationErrors)
                    alert($.trim(validationErrors));

                return isThereValidationErrors;
            }
            });
        });
    </script> 
}

<h2>@ViewBag.Title</h2>
<br /><br />
<table id="list-grid"></table>
<div id="list-pager"></div>

【问题讨论】:

    标签: c# asp.net-mvc-5 jqgrid


    【解决方案1】:

    您的 JSON 数据是否正确 UTF-8 编码?例如:

    1. ë 字符应编码为两个字节,0xC3 0xAB。
    2. JSON 数据可能需要 UTF-8 前导码,0xEF 0xBB 0xBF。

    【讨论】:

    • 不,我不认为那会做我尝试过的工作。在网格行中,数据正确显示,但在标题的选项列表中,相同的数据显示不正确。我还检查了某处是否可能存在错误配置,并将相同的单词放在一个列标题上,它显示正确。此外,仅用于良好测量的返回 json 被编码为 UTF-8,并且返回正常。
    • 好的,谢谢,我终于让它工作了。我处理字符串并根据需要用 \ 替换字符,然后将其传递给 jqGrid。出于某种原因,这行得通,我不知道为什么,但 id 可以。谢谢你的回答,你真的把我引向了正确的方向。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2019-09-17
    • 2021-01-08
    • 2014-08-09
    • 2016-03-03
    • 1970-01-01
    • 2014-06-18
    相关资源
    最近更新 更多