Установка значения по умолчанию для поля со списком Kendo из Linq

Я новичок в Kendo UI, и я искал то, что хочу делать, но безуспешно. У меня есть поле со списком, заполненное финансовыми годами. Я хочу выбрать текущий по умолчанию, который не всегда будет иметь один и тот же ранг в поле со списком. У нас есть поле в базе данных, которое установлено на 0, когда это текущий год. Я хочу, чтобы любое поле, равное 0, было моим значением по умолчанию.

Вот соответствующий код в моем контроллере. Переменная defaultValue в настоящее время не используется. Я безуспешно пытался что-то с ним сделать, и я оставил его там, потому что он ясно показывает, чего я пытаюсь достичь.

public JsonResult ListeAnneeFinanciere()
    {
        var dimtempsdate = new DimTempsDateViewModel();

        try
        {
            using (var db = new ParcAutoDbContext())
            {
                var resultat = db.Dim_Temps_Date.Select(a => new { a.ANNEE_FINANCIERE_ID, a.CLASSEMENT })
                                                .Distinct()
                                                .OrderByDescending(a => a.ANNEE_FINANCIERE_ID)
                                                .ToList();

                var defaultValue = db.Dim_Temps_Date.Select(a => new { a.ANNEE_FINANCIERE_ID, a.CLASSEMENT })
                                                .Distinct()
                                                .Where(a => a.CLASSEMENT == 0)
                                                .OrderByDescending(a => a.ANNEE_FINANCIERE_ID)
                                                .ToList();

                return Json(resultat, JsonRequestBehavior.AllowGet);
            }
        }
        catch (Exception ex)
        {
            Log.Instance.Error(ex, message: "Erreur : ListeAnneeFinanciere");
            throw new HttpException((int) HttpStatusCode.InternalServerError, message: "500 - Internal Server Error");
        }
    }

И вот соответствующий код, на мой взгляд. Я знаю, что мне нужно установить значение по умолчанию с помощью свойства value. Я могу жестко закодировать это, но это не то, что я хочу. Я также пробовал некоторые вещи в событии Databound, но безуспешно. Честно говоря, я понятия не имею, что попробовать.

<div class="form-group">
                <label class="control-label col-xs-3">Année financière</label>
                <div class="col-md-4 col-xs-9">
                    @{
                        Html.Kendo().ComboBox()
                            //.Events(e => e.DataBound("setDefaultYear"))
                            .Name("AnneeFinanciere")
                            .Placeholder("Sélectionner une année financière")
                            .NoDataTemplate("Aucune donnée")
                            .DataTextField("ANNEE_FINANCIERE_ID")
                            .DataValueField("ANNEE_FINANCIERE_ID")
                            .AutoBind(true)
                            .Suggest(true)
                            .DataSource(source =>
                            {
                                source.Read(read =>
                                {
                                    read.Action("ListeAnneeFinanciere", "Operation");
                                })
                                .ServerFiltering(true);
                            })
                            //.Value("2017-2018")
                            .HtmlAttributes(new { @style = "width:100%" })
                            .Render();
                    }
                </div>
            </div>

Я знаю, что это не должно быть так сложно, но я новичок в пользовательском интерфейсе Kendo и не экспериментировал с MVC. Английский не мой родной язык, но я надеюсь, что мой вопрос понятен и кто-то сможет мне помочь.

Спасибо вам большое за ваше время.


person Vincent Gélinas    schedule 19.06.2017    source источник


Ответы (1)


Из приведенного выше примера кода, поскольку и DataTextField, и DataValueField равны ANNEE_FINANCIERE_ID - я не уверен, что вы правильно установили данные для начала, вы можете сначала проверить это, что сказал

предполагая, что ANNEE_FINANCIERE_ID — это поле значения, а CLASSEMENT — текстовое поле, вы можете установить значение по умолчанию, передав данные по умолчанию var default = new {ANNEE_FINANCIERE_ID=0, CLASSEMENT="default"} в качестве данных представления из контроллера в представление.

     html.Kendo().ComboBox()

                        .Name("AnneeFinanciere")
                        .Placeholder("Sélectionner une année financière")
                        .NoDataTemplate("Aucune donnée")
                        .DataTextField("CLASSEMENT")
                        .DataValueField("ANNEE_FINANCIERE_ID")
                        .AutoBind(true)
                        .Suggest(true)
                        .DataSource(source =>
                        {
                            source.Read(read =>
                            {
                                read.Action("ListeAnneeFinanciere", "Operation");
                            })
                            .ServerFiltering(true);
                        })
                        .Value(ViewData["defaultClassement"])
                        .HtmlAttributes(new { @style = "width:100%" })
                        .Render();
person Jaya    schedule 19.06.2017
comment
По умолчанию ANNEE_FINANCIERE_ID — 2017–2018. Соответствующий CLASSEMENT равен 0. Это значение CLASSEMENT говорит мне, какой год является текущим. Для справки, предыдущий финансовый год имеет следующие ANNEE_FINANCIERE_ID и CLASSEMENT: 2016-2017 и -1. Следующий финансовый год имеет 2018-2019 и 1. И т. д. И CLASSEMENT изменяется в базе данных при изменении финансового года. Большое спасибо за ваш ответ и извините за то, что упустил ключевую информацию о моей проблеме. - person Vincent Gélinas; 19.06.2017
comment
Даже если вы не совсем поняли, что я хотел (во всяком случае, моя вина), ваш ответ помог мне сделать то, что я хотел :) Большое спасибо :) - person Vincent Gélinas; 19.06.2017