【问题标题】:Setting Kendo combobox default value from Linq从 Linq 设置 Kendo 组合框默认值
【发布时间】:2017-06-19 02:16:21
【问题描述】:

我是 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 UI 的初学者,并没有尝试过 MVC。英语不是我的第一语言,但我希望我的问题很清楚,并且有人能够帮助我。

非常感谢您的宝贵时间。

【问题讨论】:

    标签: c# asp.net-mvc linq kendo-ui kendo-combobox


    【解决方案1】:

    从上面的示例代码中,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();
    

    【讨论】:

    • 默认的 ANNEE_FINANCIERE_ID 是“2017-2018”。它对应的 CLASSEMENT 为 0。CLASSEMENT 值告诉我哪一年是当前年份。作为参考,上一财年有以下 ANNEE_FINANCIERE_IDCLASSEMENT :“2016-2017”和-1。下一个会计年度有“2018-2019”和1.等。当会计年度发生变化时,数据库中的CLASSEMENT也会发生变化。非常感谢您的回答,很抱歉遗漏了有关我的问题的关键信息。
    • 即使你没有完全理解我想要什么(无论如何都是我的错),你的回答帮助我做我想做的事情:) 非常感谢 :)
    猜你喜欢
    • 2015-02-08
    • 2014-02-14
    • 1970-01-01
    • 2017-10-03
    • 2011-10-16
    • 1970-01-01
    • 2020-04-11
    • 2011-10-11
    相关资源
    最近更新 更多