Razor 在.Net MVCGrid I';m无法使用客户端绑定传递其他查询选项

Razor 在.Net MVCGrid I';m无法使用客户端绑定传递其他查询选项,razor,asp.net-mvc-5,mvcgrid.net,Razor,Asp.net Mvc 5,Mvcgrid.net,嗨,我有一个网格,我需要将值发送到RetrieveDataMethod。我使用了两个下拉菜单,如过滤器,但由于菜单与我的网格中的列没有直接关系,我不能使用过滤器选项 我真的很喜欢使用客户端绑定的想法,因为它是干净的,避免了我需要编写任何jquery 我的网格的代码是 public static MVCGridBuilder<Batch> BuildGrid(GridDefaults gridDefaults, ColumnDefaults columnDefaults) {

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

我真的很喜欢使用客户端绑定的想法,因为它是干净的,避免了我需要编写任何jquery

我的网格的代码是

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 };
            });
    }
公共静态MVCGridBuilder BuildGrid(GridDefaults GridDefaults,ColumnDefaults ColumnDefaults)
{
返回新的MVCGridBuilder(gridDefaults、columnDefaults)
.AddColumns(cols=>
{
cols.Add(“BatchId”)
.WithHeaderText(“批次Id”)
.WithValueExpression(p=>p.BatchId.Trim());
列添加(“零件号”)和标题文本(“零件号”)
.WithValueExpression(p=>p.PartNumber.Trim());
列加(“调整数量”)
.使用HTMLEncoding(错误)
.带标题文本(“调整数量”)
.WithValueExpression((p,c)=>c.UrlHelper.Action(“调整批次数量”、“批次”))
.带ValueTemplate(“”);
列添加(“更新日期”)
.WithHeaderText(“更新日期”)
.WithValueExpression(p=>p.UpdateDate.ToSortDateString());
})
.带有其他查询选项名称(“FamilyId”、“ColorId”)
.带有附加设置(“RenderLoadingDiv”,true)
.WithDefaultSortColumn(“UpdateDate”)
.WithDefaultSortDirection(SortDirection.Dsc)
.WithFiltering(真)
.WithRetrieveDataMethod(上下文=>
{
var options=context.QueryOptions;
var batchRepo=dependencyrolver.Current.GetService();
var productRepo=DependencyResolver.Current.GetService();
int family=0,瓶装数量=0,colorId=0,计数;
if(options.AdditionalQueryOptions.ContainsKey(“FamilyId”))
{
var temp=options.GetAdditionalQueryOptionString(“FamilyId”);
如果(温度!=null)
{
family=int.Parse(options.getAdditionalQueryOptions字符串(“FamilyId”);
}
}
if(options.AdditionalQueryOptions.ContainsKey(“ColorId”))
{
var color=options.GetAdditionalQueryOptionString(“ColorId”);
如果(颜色!=null)
{
var temp=颜色分割(“”);
if(temp[0]!=string.Empty)
{
colorId=转换为32(温度[0]);
}
如果(温度长度>1)
{
瓶装数量=转换为32(温度[1]);
}
}
}
var partNumbers=productRepo.GetPartNumbersByFamilyColorQuantity(系列、颜色ID、瓶装数量);
var items=batchRepo.GetBatcheHistoryRecordsForGrid(options.GetLimitOffset(),options.GetLimitRowcount(),partNumber,out count);
如果(!string.IsNullOrWhiteSpace(options.SortColumnName))
{
开关(options.SortColumnName.ToLower().Replace(“,string.Empty))
{
案例“batchid”:
items=items.OrderBy(p=>p.BatchId.ToList();
打破
案例“零件号”:
items=items.OrderBy(p=>p.PartNumber.ToList();
打破
案例“调整数量”:
items=items.OrderBy(p=>p.AdjustedQty.ToList();
打破
案例“updatedate”:
items=items.OrderBy(p=>p.UpdateDate.ToList();
打破
}
}
if(options.SortDirection.ToString().ToLower()=“dsc”)
{
items.Reverse();
}
返回新的QueryResult(){Items=Items,TotalRecords=count};
});
}
我的HTML的相关部分是

@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>
@Scripts.Render(“~/Areas/MfgTransactions\u MVC/Scripts/CreateBatchDropDownFilters.js”)
@Scripts.Render(“~/bundles/BootstrapGridScripts”)
@style.Render(“~/bundles/Bootstrap3/BootstrapGridCss”);
$(文档).ready(函数(){
$(“#调整数量”)。可编辑();
$.fn.editable.defaults.mode='inline';
$.fn.editable.defaults.ajaxOptions={
ajaxOptions:{
键入:“POST”,
数据类型:“json”
}
};
});
....
@Html.LabelFor(x=>x.FamilyId)
@Html.DropDownListFor(x=>x.FamilyId,Model.familyList,“选择族”,新{@class=“form control”,data\u mvcgrid\u type=“additionalQueryOption”,data\u mvcgrid\u option=“FamilyId”,data\u mvcgrid\u apply\u additional=“change”})
@LabelFor(x=>x.Color)
@Html.DropDownListFor(x=>x.Color,Model.ColorListItems,“选择颜色”,新建{@class=“form control”,data\u mvcgrid\u type=“additionalQueryOption”,data\u mvcgrid\u option=“ColorId”,data\u mvcgrid\u apply\u additional=“change”})
问题似乎是没有触发additionalQueryOption事件。调试代码时,我可以看到行
var options=context.QueryOptions
具有其他QueryOptions,但没有相应的值

有没有一个步骤是我在设置时错过的?

我的错,我已经删除了

@Scripts.Render("~/MVCGridHandler.axd/script.js")
并把它放在我的bundle配置中,但它在那里似乎不起作用。

我的错,我已经删除了

@Scripts.Render("~/MVCGridHandler.axd/script.js")