【问题标题】:Auto calculate Kendo Grid Column自动计算剑道网格列
【发布时间】:2015-04-13 07:40:22
【问题描述】:

我想在客户端自动计算剑道网格列。我的代码是

   @(Html.Kendo().Grid(Model)
                .Name("VATGrid")
                .Columns(columns =>
                {

                    columns.Bound(p => p.BaseAmount);

                    columns.Bound(x => x.Unit);
                    columns.Bound(p => p.VATPercentage);

                    columns.Bound(p => p.VATAmount)
                            .HeaderHtmlAttributes(new { title = "VAT Amount" })
                            .HtmlAttributes(new { style = "text-align:right" })
                            .Title("VAT Amount")
                        .ClientTemplate(
                                        "#= VATAmount=kendo.toString(BaseAmount*Unit*VATPercentage, 'n2')#" +
                                        "<input type='hidden' class='VATAmount'  value='#=kendo.toString(BaseAmount*Unit*VATPercentage, 'n4')#' />");

                                          })

                .Editable(editable => editable.Mode(GridEditMode.InCell))

                .DataSource(dataSource => dataSource
                    .Ajax()
                    .Batch(true)
                    .ServerOperation(false)
                    .Model(model =>
                                    {
                                        model.Id(p => p.DocumentVATID);
                                        model.Field(x => x.CompanyVATType).Editable(false);
                                        model.Field(x => x.VATPercentage).Editable(false);
                                        model.Field(x => x.VATType).Editable(false);
                                        model.Field(x => x.BaseAmount).DefaultValue(0);
                                        model.Field(x => x.Unit).DefaultValue(0);
                                    })
                    )

我可以在哪里获得自动计算的值,但在单击网格单元后。 我想显示变化本身的计算值

【问题讨论】:

    标签: model-view-controller kendo-ui kendo-grid


    【解决方案1】:

    这样的?

        @(Html.Kendo().Grid(Model)
        .Name("VATGrid")
        .Columns(columns =>
        {
    
            columns.Bound(p => p.BaseAmount);
    
            columns.Bound(x => x.Unit);
            columns.Bound(p => p.VATPercentage);
    
            columns.Bound(p => p.VATAmount)
                    .HeaderHtmlAttributes(new { title = "VAT Amount" })
                    .HtmlAttributes(new { style = "text-align:right" })
                    .Title("VAT Amount")
                //.ClientTemplate(
                                //"#= VATAmount=kendo.toString(BaseAmount*Unit*VATPercentage, 'n2')#" +
                                //"<input type='hidden' class='VATAmount'  value='#=kendo.toString(BaseAmount*Unit*VATPercentage, 'n4')#' />");
                                //})
                .ClientTemplate(
                                "<span id="vatId">#= VATAmount=kendo.toString(BaseAmount*Unit*VATPercentage, 'n2')#</span>" +
                                "<input type='hidden' class='VATAmount'  value='#=kendo.toString(BaseAmount*Unit*VATPercentage, 'n4')#' />");
                                })
        //put span tag around the clienttemplate above
        .Editable(editable => editable.Mode(GridEditMode.InCell))
        .Events(e => e.Change("onProductChange"))  //add this event listener
        .DataSource(dataSource => dataSource
            .Ajax()
            .Batch(true)
            .ServerOperation(false)
            .Model(model =>
                            {
                                model.Id(p => p.DocumentVATID);
                                model.Field(x => x.CompanyVATType).Editable(false);
                                model.Field(x => x.VATPercentage).Editable(false);
                                model.Field(x => x.VATType).Editable(false);
                                model.Field(x => x.BaseAmount).DefaultValue(0);
                                model.Field(x => x.Unit).DefaultValue(0);
                            })
            )
    
    <script type="text/javascript">
        function onChange(e) {
            var selected = $.map(this.select(), function (item) {
                return $(item).text();
            });
            console.log("Selected: " + selected.length + " item(s), [" + selected.join(", ") + "]");
            //TODO: calculate your data and use calc variables below
            var calc1 = 0;
            var calc2 = 0;
            $("#vatId").text(calc);
            $(".VATAmount").val(calc2);  //or something like that, but you get the grip
        }
    </script>
    

    也许我误解了您的问题,但在我看来,您每次选择单元格时都想计算页脚模板中的数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-21
      • 1970-01-01
      • 2014-10-26
      • 1970-01-01
      • 1970-01-01
      • 2013-07-06
      • 1970-01-01
      相关资源
      最近更新 更多