Как выделить дублирующее значение в сетке кендо - PullRequest
0 голосов
/ 10 мая 2018

Это моя логика для предотвращения дублирования значений в контроллере

public ActionResult ProviderType_Create([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<ProviderTypeMasterViewModel> ProviderTypeMasterList)
    {
        var results = new List<ProviderTypeMasterViewModel>();
        try
        {
            _logger.LogInformation("ProviderTypeMastersController ProviderType_Create Start");
            foreach (var ProviderTypeMaster in ProviderTypeMasterList)
            {
                TblProviderTypeMaster ptm = new ProviderTypeMasterViewModel().ToModel(ProviderTypeMaster);
                var provd = _context.TblProviderTypeMasters.Where(p => p.ProviderTypeName == ProviderTypeMaster.ProviderTypeName).ToList();
                if (provd != null && provd.Count() == 0)
                {
                    if (ProviderTypeMasterList != null && ModelState.IsValid)
                    {
                        string userID = GetUserID();
                        providerTypeMasterService.SaveProviderTypeMaster(ProviderTypeMaster, userID);
                    }
                }
                else
                {
                    duplicate = true;
                    return this.Json(new DataSourceResult
                    {
                        Errors = "my custom error"
                    });
                }
            }

            _logger.LogInformation("ProviderTypeMastersController ProviderType_Create Complete");
        }
        catch (Exception e)
        {
            _logger.LogError("ProviderTypeMastersController ProviderType_Create Failed - " + e.Message);
        }
        return Json(results.ToDataSourceResult(request, ModelState));
    }

Я показываю ошибку в предупреждающем сообщении, используя событие ошибки сетки кендо в моем представлении . Теперь мне нужна помощь по этим двум вещам.

1.) Есть ли другой способ показать сообщение об ошибке без предупреждения. Понравился ярлык? Если да, то где мне скрывать метку после удаления дубликата?

2.) Я хочу выделить конкретное значение сетки, в которой пользователь ввел дублирующее значение. Изменение, например, изменение определенного значения сетки на красный, если идентификатор дублируется, и удаление красного цвета, когда пользователь изменяет дублирующее значение на уникальное значение.

Я новичок и застрял здесь. Кто-нибудь может мне с этим помочь? Спасибо

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Чтобы отформатировать значение столбца сетки Кендо с условно выбранным действием, вы можете использовать один из подходящих примеров ниже. Для получения дополнительной информации: Как использовать условную логику в шаблоне клиента столбца? .

Пользовательский интерфейс для Javascript:

{
    field: "EmployeeName", type: "string", width: "55px", title: "Employee Name", 
       template: "#= GetEditTemplate(data) #"
}


Интерфейс для MVC:

...
columns.Bound(t => t.EmployeeName).Title("Status Name").Template(@<text></text>)
    .ClientTemplate("#= GetEditTemplate(data)#").Width("55px");
...

Вот метод, использованный в примере:

<script>
//Change the color of the cell value according to the given condition
function GetEditTemplate(data) {
    var html;

    if (data.StatusID == 1) {
        html = kendo.format(
        //"<a class=\"k-button\" href='" + '@Url.Action("Edit1", "Controller")' + "/{0}" + " '>Edit</a>  ",
        "<span class='text-success'>" +
        data.EmployeeName
        + "</span>"
        );
    }
    else {
        html = kendo.format(
        //"<a class=\"k-button\" href='" + '@Url.Action("Edit2", "Controller")' + "/{0}" + " '>Edit</a>  ",
        "<span class='text-danger'>Cancel</span>"
        );
    }
    return html;
}
</script>

Надеюсь, это поможет ...

0 голосов
/ 10 мая 2018

Просто добавьте свою ошибку в ModelState:

public JsonResult Create([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<ProviderTypeMasterViewModel> ProviderTypeMasterList)
{
    if (ModelState.IsValid)
    {
        foreach (var ProviderTypeMaster in ProviderTypeMasterList)
        {
            TblProviderTypeMaster ptm = new ProviderTypeMasterViewModel().ToModel(ProviderTypeMaster);
            if (_context.TblProviderTypeMasters.Any(p => p.ProviderTypeName == ProviderTypeMaster.ProviderTypeName))
            {
                 ModelState.AddModelError("ProviderTypeName", "ProviderType already exists");
            }
            else
            {
                if (ProviderTypeMasterList != null)
                {
                    string userID = GetUserID();
                    providerTypeMasterService.SaveProviderTypeMaster(ProviderTypeMaster, userID);
                }
            }
        }
    }
}
return Json(results.ToDataSourceResult(request, ModelState));
...