Razor 在.Net MVCGrid I';m无法使用客户端绑定传递其他查询选项
嗨,我有一个网格,我需要将值发送到RetrieveDataMethod。我使用了两个下拉菜单,如过滤器,但由于菜单与我的网格中的列没有直接关系,我不能使用过滤器选项 我真的很喜欢使用客户端绑定的想法,因为它是干净的,避免了我需要编写任何jquery 我的网格的代码是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) {
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")