如何在kendo网格中切换Euro和Procent

时间:2018-02-06 09:36:38

标签: c# asp.net-mvc kendo-grid kendo-asp.net-mvc

我有一个剑道网格,如下所示:

@(Html.Kendo().Grid<SDB.Models.NettoVergelijking.Dienstverband>()
        .Name("overzicht-grid")
        .AutoBind(false)
        .Columns(columns =>
        {
            columns.Bound(d => d.Naam).Title("Medewerker").ClientTemplate("<span title='${Naam}'>${Naam}</span>").Width(300)
                .Filterable(f =>
                {
                    f.Extra(false);
                    f.Operators(op =>
                    {
                        op.ForString(str =>
                        {
                            str.Clear().Contains("Bevat");
                        });
                    });
                });
            columns.Bound(d => d.Contractvorm).Title("Contractvorm").ClientTemplate("<span title='${Contractvorm}'>${Contractvorm}</span>").Width(200).Filterable(ftb => ftb.Multi(true)); ;
            columns.Bound(d => d.Run1.Netto).Title("Periode 1").Filterable(true).HtmlAttributes(new { style = "text-align:right;" }).Width(220).ClientTemplate("# if (Run1.Netto != 0) { #  #= kendo.toString(Run1.Netto, 'n2') #  # } #").HeaderHtmlAttributes(new { style = "text-align:right;" });
            columns.Bound(d => d.Run2.Netto).Title("Periode 2").Filterable(true).HtmlAttributes(new { style = "text-align:right;" }).Width(220).ClientTemplate("# if (Run2.Netto != 0) { #  #= kendo.toString(Run2.Netto, 'n2') #  # } #").HeaderHtmlAttributes(new { style = "text-align:right;" });
            columns.Bound(d => d.Verschil).Filterable(false).HtmlAttributes(new { style = "text-align:right;", @class = "NettoVergelijkingVerschil" }).ClientTemplate("# if (Verschil != 0) { #  #= kendo.toString(Verschil, 'n2') #  # } else { # 0,00  # } #").Width(165).Format("{0:#.00}").HeaderHtmlAttributes(new { style = "text-align:right;" });
        })
        .Filterable(f => f.Mode(GridFilterMode.Menu))
        .Sortable()
        .Pageable(pager => pager.PageSizes(new List<object> { 25, 50, 100, 200, 500 }))
        .ClientDetailTemplateId("overzicht-grid-details")
        .Excel(e => e.AllPages(true))
        .DataSource(dataSource => dataSource
            .Ajax()
            .PageSize(50)
            .ServerOperation(false)
            .Model(model =>
            {
                model.Id(d => d.Id);
                model.Field(f => f.Naam);
                model.Field(f => f.Contractvorm);
                model.Field(f => f.Run1.Netto);
                model.Field(f => f.Run2.Netto);
            })
            .Read(r => r.Action("GetOverzicht", "NettoVergelijking").Data("getData"))
            .Sort(d => d.Add(a => a.Verschil).Descending())
        )
)

我有一个开关切换按钮,如下所示:

    $("#euro-switch").kendoMobileSwitch({
        onLabel: "%",
        offLabel: "€",
        change: function (e) {

            var label = e.sender.value() ? e.sender.options.onLabel : e.sender.options.offLabel.toString();
            var inpbox = $('#SignalThreshold').data("kendoNumericTextBox");
            console.log(inpbox)
            inpbox.setOptions(
                {
                    format: "\\" + label + "\\ #",
                    decimals: 3
                });
            inpbox.value(inpbox.value());
        }

    });

所以你可以在euro和procent之间切换。

我有一个这样的课程:

public class Overzicht
    {
        [XmlArrayItem("Dvb")]
        public List<Dienstverband> Dienstverbanden { get; set; }
    }

    public class Dienstverband
    {


        [XmlAttribute("Id")]
        public int Id { get; set; }

        public string Naam { get; set; }

        public string Contractvorm { get; set; }

        [XmlElement("Run1")]
        public RunGegevens Run1 { get; set; }

        [XmlElement("Run2")]
        public RunGegevens Run2 { get; set; }



        public decimal Verschil
        {
            get
            {
                {

                    return Run1.Netto - Run2.Netto;
                }
            }
        }


        public decimal VerschilPercentage
        {
            get
            {
                return Run1.Netto == 0 ? 0 : ((Run1.Netto - Run2.Netto)/Run1.Netto)*100;
            }
        }
    }

    public class RunGegevens
    {
        public decimal Netto { get; set; }
        public decimal Herr { get; set; }
    }
你看到了一个方法:

verschil和verschilPercentage。所以现在我想在Verschil和VerschilPercentage之间切换。这样用户就可以看到欧元的金额,但也可以按百分比更改视图。

但是怎么做?

谢谢

那么如何切换网格:d.Verschild.VerschilPercentage

谢谢

我现在就这样:

$("#euro-switch").kendoMobileSwitch({

            onLabel: "%",
            offLabel: "€",
            change: function (e) {

                var label = e.sender.value() ? e.sender.options.onLabel : e.sender.options.offLabel.toString();                        
                var grid = $("#overzicht-grid").data("kendoGrid");               

                if (e.checked) {
                    grid.hideColumn("Verschil");
                    grid.showColumn("VerschilPercentage");
                }
                else {
                    grid.hideColumn("VerschilPercentage");
                    grid.showColumn("Verschil");
                }            

                var inpbox = $('#SignalThreshold').data("kendoNumericTextBox");               
                inpbox.setOptions(
                    {
                        format: "\\" + label + "\\ #",
                        decimals: 2
                    });
                inpbox.value(inpbox.value());
            }

        });

但是ProcentVerschil列将不可见

1 个答案:

答案 0 :(得分:0)

生成两列但一次只显示一列。

1)更新网格视图,添加列(必要时进行调整):

columns.Bound(d => d.VerschilPercentage).Hidden().Filterable(false).HtmlAttributes(new { style = "text-align:right;", @class = "NettoVergelijkingVerschil" }).ClientTemplate("# if (VerschilPercentage != 0) { #  #= kendo.toString(VerschilPercentage, 'n2') #  # } else { # 0,00  # } #").Width(165).Format("{0:#.00}").HeaderHtmlAttributes(new { style = "text-align:right;" });

2)更新交换机的更改处理程序:

change: function (e) {
    // Whatever the other bits do... probably keep them, and add:

    var grid = $("#overzicht-grid").data("kendoGrid");

    if (e.checked) {
        grid.hideColumn("Verschil");
        grid.showColumn("VerschilPercentage");
    }
    else {
        grid.hideColumn("VerschilPercentage");
        grid.showColumn("Verschil");
    }
}

当然未经测试。

更新

使用Kendo Dojo

进行测试