Как добавить, если условие внутри функции рендеринга JQuery Datatable - PullRequest
1 голос
/ 20 мая 2019

Я хочу добавить условие if внутри функции рендеринга столбца таблиц данных jquery

<script type="text/javascript">
    $(document).ready(function () {
        $("#wfDefinitionGrid").DataTable({
            "processing": true,
            "serverSide": true,
            "ajax": {
                "url": "@Url.Action("GetAllWfDefinitions", "WorkflowDefinition", new { area = "DXAdmin" })",
                "type": "POST",
                "datatype": "json"
            },

            "columns": [
                { "data": "Name", "name": "Name" }, 
                { "data": "Description", "name": "Description" },
                {
                    "render": function (data, type, full, meta) {
                        return '<div class="action_button">' +

                    if (@Model.AssnAppRoleModulePermissionModel.Select(s => s.PermissionKey).Contains(EnumHelper.GetDescription(PermissionType.EditWf))) 
{
                        '<img src="@Url.Content("~/images/edit.svg")" title="Edit" onclick="javascript: EditWfDefinition(' + full.WfDefinitionId + ');" />'
                    } + 

                    '<a href="javascript:void(0)" id="inactiveWorkflowDefinition"  onclick="ChangeStatus(' + full.WfDefinitionId + ',' + full.IsObsolete + ')">' + 
                    (full.IsObsolete == false ? '<img src="/images/Inactivate.svg" class="radioImgCls" title="Activate"/>' : '<img src="/images/Active.svg" class="radioImgCls" title="Inactivate" />') + 
                    '</a>' +
                    '<img src="@Url.Content("~/images/delete.svg")" title="Delete" onclick="javascript: DeleteWfDefinition(' + full.WfDefinitionId + ');" /></div>';
                }
            }
        ],          
    });
});

ожидаемый результат должен быть таким, как если бы условие выполнялось, весь тег img, содержащий edit.svg, будет отображаться.

/// ошибка: неперехваченная SyntaxError: неожиданный токен, если

Ответы [ 2 ]

0 голосов
/ 20 мая 2019
//for example if you want to add conditions to name Column    
    var columnDefs : [{ targets: "name",
    render : function(data, type, row){
    if(data !== 'undefined'){
        return data;
    }else{
        return 'NA';
    }
 ]
0 голосов
/ 20 мая 2019

Ваша проблема не имеет ничего общего с рендерингом данных с функцией с оператором if, но если ваше условие в Razor, код не будет компилироваться внутри условия javascript.

Вы можете попытаться поместить свое условие в переменную, а затем сравнить в своем операторе if.

    var someVariable = "@Model.AssnAppRoleModulePermissionModel.Select(s => s.PermissionKey).Contains(EnumHelper.GetDescription(PermissionType.EditWf))"

    if (someVariable == "True"){
        //Do something
    } else {
        //Do something else
    }

EDIT:

Имейте в виду, что этот фрагмент кода не будет работать с отдельным файлом Javascript, поскольку он использует Razor для получения значения. Вы всегда должны использовать тег script в файле .cshtml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...