jqGrid, не удалось заставить работать форматировщик showlink - PullRequest
3 голосов
/ 05 сентября 2011

Привет. Я пытаюсь заставить работать форматировщик showlink, следуя этому документу от trirand.

То, чего я хочу добиться, - это гиперссылка, по которой я могу щелкнуть для просмотра в режиме редактирования, чтобы обновить / отредактировать записи. Но по какой-то причине столбец пуст, где я хочу показать гиперссылку.

Вот мои фрагменты кода, а ссылка - последний столбец:

<script type="text/javascript">
    $(document).ready(function () {
        $("#grid_products").jqGrid({
            jsonReader: {
                repeatitems: false,
                id: 'Guid'
            },
            url: '/Product/jqgridJSON/',
            datatype: 'json',
            mtype: 'GET',
            colNames: ['ProductCode', 'ProductDescription', 'DefaultSellPrice', 'LastCost', 'Edit'],
            colModel: [
                { name: 'ProductCode', index: 'Productcode' },
                { name: 'ProductDescription', index: 'ProductDescription' },
                { name: 'DefaultSellPrice', formatter: 'currency', index: 'DefaultSellPrice' },
                { name: 'LastCost', formatter: 'currency', index: 'LastCost' },
                { name: 'MyLink',
                    edittype: 'select',
                    formatter: 'showlink',
                    formatoptions: { baseLinkUrl: '/Product/Update/', idName: 'Guid' }
                },
                ],
            pager: '#pager',
            rowNum: 10,
            rowList: [20, 50, 100, 200],
            sortname: 'ProductCode',
            sortorder: 'asc',
            viewrecords: true,
            width: 'auto',
            height: 'auto',
            caption: 'Products'
        }).navGrid('#pager', { edit: true, add: false, del: false });
    });
</script>

@{
    ViewBag.Title = "JSONGrid";
}

<h2>JSONGrid</h2>
<table id="grid_products"></table>
<div id="pager"></div>

Форматер из jqGrid работает для валюты, но по какой-то причине он просто не отображается для гиперссылки.

Обновление:

Получил работу с помощью пользовательского форматера.

...
{ name: 'MyLink',
                    formatter: myLinkFormatter,
                },
...

function myLinkFormatter (cellvalue, options, rowObjcet) {
    return '<a href = "/Product/Edit/' + options.rowId + '">Edit this product</a>';
}

1 Ответ

1 голос
/ 05 сентября 2011

Полагаю, вы не указали значения в JSON-входе для столбца 'MyLink'.Из-за этого гиперссылка пуста.Если вы хотите разместить ссылку с любым фиксированным текстом в столбце, я бы порекомендовал вам использовать пользовательский форматер .См. недавний ответ для примера.

Еще один возможный способ решения проблемы - использовать formatter: 'showlink' и включить jsonmap: function() { return "Edit"; } в определение столбца «MyLink».В этом случае вам не нужно будет включать в данные JSON "MyLink":"Edit" для каждой строки данных.Важно понимать, что трюк работает только в случае использования jsonReader: {repeatitems: false} (поэтому он должен работать для вашей сетки).

Если у вас есть другая проблема, вы должны включить в текст вашего вопроса данные JSON, которыеВы используете.

Несколько небольших замечаний к вашему текущему коду:

  • использование edittype: 'select' вместе с formatter: 'showlink' не имеет смысла.Вы должны удалить его, если будете использовать formatter: 'showlink'.
  • , параметр height: 'atuo' должен быть height: 'auto'.
  • pager: $('#pager') лучше заменить на pager: '#pager'.Если вы используете pager: $('#pager'), jqGrid заменит его внутренне на pager: '#pager', а объект $('#pager') будет удален.
  • Если вы используете jsonReader: { id: 'Guid'} и не планируете показывать направляющиепользователь может удалить столбец 'Guid' из таблицы.id (Guid в вашем случае) будет использоваться для назначения идентификаторов <tr> элементов (строк таблицы) сетки.Таким образом, вам не нужно хранить одну и ту же информацию дважды
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...