从 Linq 设置 Kendo 组合框默认值

Setting Kendo combobox default value from Linq

我是 Kendo UI 的新手,我已经搜索了我想做的事情,但没有任何运气。我有一个充满财政年度的组合框。我想 select 默认情况下当前的一个,它在组合框中并不总是处于同一级别。我们在数据库中有一个字段,当它是当前年份时设置为 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");
        }
    }

这是我认为的相关代码。我知道我需要将默认值设置为 属性。我可以对其进行硬编码,但这不是我想要的。我也在 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 UI 的初学者,还没有尝试过 MVC。英语不是我的第一语言,但我希望我的问题很清楚,并且有人能够帮助我。

非常感谢您的宝贵时间。

从上面的示例代码中可以看出,DataTextFieldDataValueField 都是 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();