首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在.Net MVCGrid中,我无法使用客户端绑定传递其他查询选项

在.Net MVCGrid中,我无法使用客户端绑定传递其他查询选项
EN

Stack Overflow用户
提问于 2016-02-08 11:16:39
回答 1查看 778关注 0票数 1

嗨,我有一个网格,我需要将值发送到RetrieveDataMethod。我使用了2个下拉菜单,比如过滤器,但是由于菜单与我的网格中的列没有直接关联,所以我不能使用filter选项。

我非常喜欢使用客户端绑定的想法,因为它是干净的,并且不需要编写任何jquery。

我的网格代码是

代码语言:javascript
复制
public static MVCGridBuilder<Batch> BuildGrid(GridDefaults gridDefaults, ColumnDefaults columnDefaults)
    {
        return new MVCGridBuilder<Batch>(gridDefaults, columnDefaults)
            .AddColumns(cols =>
            {
                cols.Add("BatchId")
                    .WithHeaderText("Batch Id")
                    .WithValueExpression(p => p.BatchId.Trim());
                cols.Add("PartNumber").WithHeaderText("Part Number")
                    .WithValueExpression(p => p.PartNumber.Trim());
                cols.Add("AdjustedQty")
                    .WithHtmlEncoding(false)
                    .WithHeaderText("Adjusted Qty")
                    .WithValueExpression((p, c) => c.UrlHelper.Action("AdjustBatchQuantity", "Batch"))
                    .WithValueTemplate("<a href='#' id='AdjustedQty' style='display: inline;' data-type='text' data-pk='{Model.BatchId}' data-url='AdjustBatchQuantity' data-title='Adjust Quantity' class='editable editable-click' >{Model.AdjustedQty}</a>");
                cols.Add("UpdateDate")
                    .WithHeaderText("Update Date")
                    .WithValueExpression(p => p.UpdateDate.ToShortDateString());
            })
            .WithAdditionalQueryOptionNames("FamilyId", "ColorId")
            .WithAdditionalSetting("RenderLoadingDiv", true)
            .WithDefaultSortColumn("UpdateDate")
            .WithDefaultSortDirection(SortDirection.Dsc)
            .WithFiltering(true)
            .WithRetrieveDataMethod(context =>
            {
                var options = context.QueryOptions;

                var batchRepo = DependencyResolver.Current.GetService<IBatchRepository>();
                var productRepo = DependencyResolver.Current.GetService<IProductRepository>();

                int family = 0, bottleQty = 0, colorId = 0, count;

                if (options.AdditionalQueryOptions.ContainsKey("FamilyId"))
                {
                    var temp = options.GetAdditionalQueryOptionString("FamilyId");

                    if (temp != null)
                    {
                        family = int.Parse(options.GetAdditionalQueryOptionString("FamilyId"));
                    }
                }

                if (options.AdditionalQueryOptions.ContainsKey("ColorId"))
                {
                    var color = options.GetAdditionalQueryOptionString("ColorId");

                    if (color != null)
                    {
                        var temp = color.Split('_');

                        if (temp[0] != string.Empty)
                        {
                            colorId = Convert.ToInt32(temp[0]);
                        }

                        if (temp.Length > 1)
                        {
                            bottleQty = Convert.ToInt32(temp[1]);
                        }
                    }
                }

                var partNumbers = productRepo.GetPartNumbersByFamilyColorQuantity(family, colorId, bottleQty);
                var items = batchRepo.GetBatcheHistoryRecordsForGrid(options.GetLimitOffset(), options.GetLimitRowcount(), partNumbers, out count);

                if (!string.IsNullOrWhiteSpace(options.SortColumnName))
                {
                    switch (options.SortColumnName.ToLower().Replace(" ", string.Empty))
                    {
                        case "batchid":
                            items = items.OrderBy(p => p.BatchId).ToList();
                            break;
                        case "partnumber":
                            items = items.OrderBy(p => p.PartNumber).ToList();
                            break;
                        case "adjustedqty":
                            items = items.OrderBy(p => p.AdjustedQty).ToList();
                            break;
                        case "updatedate":
                            items = items.OrderBy(p => p.UpdateDate).ToList();
                            break;
                    }
                }

                if (options.SortDirection.ToString().ToLower() == "dsc")
                {
                    items.Reverse();
                }

                return new QueryResult<Batch>() { Items = items, TotalRecords = count };
            });
    }

我的HTML的相关部分是

代码语言:javascript
复制
@Scripts.Render("~/Areas/MfgTransactions_MVC/Scripts/CreateBatchDropDownFilters.js")

@Scripts.Render("~/bundles/BootstrapGridScripts")
@Styles.Render("~/bundles/Bootstrap3/BootstrapGridCss");

<script>
    $(document).ready(function () {
        $('#AdjustedQty').editable();
        $.fn.editable.defaults.mode = 'inline';
        $.fn.editable.defaults.ajaxOptions = {
            ajaxOptions: {
                type: 'POST',
                dataType: 'json'
            }
        };
    });
</script>

....

<div class="form-group ">
    @Html.LabelFor(x => x.FamilyId)
    @Html.DropDownListFor(x => x.FamilyId, Model.FamilyListItems, "Select Family", new { @class = "form-control", data_mvcgrid_type = "additionalQueryOption", data_mvcgrid_option = "FamilyId", data_mvcgrid_apply_additional = "change" })
 </div>

 <div class="form-group ">
     @Html.LabelFor(x => x.Color)
     @Html.DropDownListFor(x => x.Color, Model.ColorListItems, "Select Colour", new { @class = "form-control", data_mvcgrid_type = "additionalQueryOption", data_mvcgrid_option = "ColorId", data_mvcgrid_apply_additional = "change" })
 </div>

问题似乎是additionalQueryOption事件没有被触发。当我调试代码时,我可以看到行var options = context.QueryOptions;有AdditionalQueryOptions,但是它们没有值。

在设置这件事时,我有没有错过一步?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-08 14:16:12

我的错,我已经移走了

代码语言:javascript
复制
@Scripts.Render("~/MVCGridHandler.axd/script.js")

并将其放在我的包配置中,但它似乎在那里不起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35268335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档