Drop down menu 剑道下降下线不工作

Drop down menu 剑道下降下线不工作,drop-down-menu,kendo-ui,kendo-grid,kendo-dropdown,Drop Down Menu,Kendo Ui,Kendo Grid,Kendo Dropdown,我想将下拉列表添加到我的网格顶部。但它不能正常工作。我需要的是从下拉菜单中选择一个项目,并在网格上填充所选项目的其余细节 但我得到了: **The parameters dictionary contains a null entry for parameter 'itemIDFilter' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult _BinCard(Kendo.Mvc.UI.Dat

我想将下拉列表添加到我的网格顶部。但它不能正常工作。我需要的是从下拉菜单中选择一个项目,并在网格上填充所选项目的其余细节 但我得到了:

  **The parameters dictionary contains a null entry for parameter 'itemIDFilter' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult _BinCard(Kendo.Mvc.UI.DataSourceRequest, Int32)' in X.Controllers.ItemsController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
    Parameter name: parameters**
控制器:

public ActionResult _ItemDropdown([DataSourceRequest] DataSourceRequest request)
      {
          //
         var data = ReportEngineHelper.GetReportingEngine(Session).Generate<ItemDropDownQuery>().ToQueryModel<ItemDropDownModel>();
         return Json(data.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
      }




  public ActionResult _BinCard([DataSourceRequest] DataSourceRequest request, int itemIDFilter)
            {
                var data = ReportEngineHelper.GetReportingEngine(Session).Generate<BinCardQuery>(new Filter()
                {
                   Item  = new Item(){ItemID = itemIDFilter}
                }).ToQueryModel<BinCard>();
                return Json(data.ToDataSourceResult(request));
            }
BinCardQuery:

public override string Generate()
        {


     QueryString = string.Format(@"`

        Select FullItemName Item,`
         Unit, GRNFDate [Date], Supplier,  Null InvoiceNo, Received, Issued, 
           SUM(IsNull(Received,0) - IsNull(Issued, 0)) 
           OVER (ORDER BY RowNumber asc) As Balance
            From Transactions.StockOnHandBase 
           where EnvironmentID = {0} and  itemid = {1}
     ", EnvironmentID, Item.ItemID);
                return QueryString;
            }

        public Item Item { get; set; }

请尝试使用下面的代码段

查看

@( 
Html.Kendo().DropDownList()
    .Name("Itemdropdownlist")
    .DataTextField("FullItemName")
    .DataValueField("ItemID")
    .DataSource(source => source.Read(read => read.Action("_ItemDropdown", "Home")))
    .OptionLabel("Select an Item")) 
@( 
 Html.Kendo().DropDownList()
        .Name("Itemdropdownlist")
        .DataTextField("FullItemName")
        .DataValueField("ItemID")
        .DataSource(source => source.Read(read => read.Action("_ItemDropdown", "Home")))
        .OptionLabel("Select an Item")
        .Events(e =>
            {
                e.Change("onChanges");
            })
        )
<br />
@(
 Html.Kendo().Grid<MvcApplication1.Models.BinCard>()
    .Name("BinCardGrd")
    .AutoBind(false)
    .DataSource(dataSource => dataSource
        .Ajax()
        .Read(read => read.Action("_BinCard", "Home").Data("readItemIdFilter")))

        .Columns(columns =>
        {
            columns.Bound(c => c.Item).Width(550);
            columns.Bound(c => c.Unit).Width(100);
        }
    )
  .Sortable()

      )

<script>
    function readItemIdFilter() {

        var IID = $("#Itemdropdownlist").data("kendoDropDownList");

        var ddvalue = 0;
        debugger;
        if (IID.dataItem() && IID.dataItem().ItemID) {
            ddvalue = IID.dataItem().ItemID;
        }
        return {
            itemIDFilter: ddvalue
        };
    }

    function onChanges(e) {
        $('#BinCardGrd').data('kendoGrid').dataSource.read();
        $('#BinCardGrd').data('kendoGrid').refresh();
    }

</script>
控制器

public JsonResult _ItemDropdown()
{
    List<ItemDropDownModel> lst = new List<ItemDropDownModel>();

    lst.Add(new ItemDropDownModel() { ItemID = 1, FullItemName = "1", ItemWithCommodityType = "1" });
    lst.Add(new ItemDropDownModel() { ItemID = 11, FullItemName = "11", ItemWithCommodityType = "11" });
    lst.Add(new ItemDropDownModel() { ItemID = 111, FullItemName = "111", ItemWithCommodityType = "111" });

    return Json(lst, JsonRequestBehavior.AllowGet);
}
public JsonResult _ItemDropdown()
{
    List<ItemDropDownModel> lst = new List<ItemDropDownModel>();

    lst.Add(new ItemDropDownModel() { ItemID = 1, FullItemName = "1", ItemWithCommodityType = "1" });
    lst.Add(new ItemDropDownModel() { ItemID = 11, FullItemName = "11", ItemWithCommodityType = "11" });
    lst.Add(new ItemDropDownModel() { ItemID = 111, FullItemName = "111", ItemWithCommodityType = "111" });

    return Json(lst, JsonRequestBehavior.AllowGet);
}

public ActionResult _BinCard([DataSourceRequest] DataSourceRequest request, int itemIDFilter)
{
    List<BinCard> lst = new List<BinCard>();
    lst.Add(new BinCard() { Item = "2", Unit = itemIDFilter.ToString() });
    lst.Add(new BinCard() { Item = "22", Unit = itemIDFilter.ToString() });
    lst.Add(new BinCard() { Item = "222", Unit = itemIDFilter.ToString() });

    return Json(lst.ToDataSourceResult(request));
}
publicjsonresult\u ItemDropdown()
{
List lst=新列表();
添加(新的ItemDropDownModel(){ItemID=1,FullItemName=“1”,ItemWithCommodityType=“1”});
添加(新的ItemDropDownModel(){ItemID=11,FullItemName=“11”,ItemWithCommodityType=“11”});
添加(新的ItemDropDownModel(){ItemID=111,FullItemName=“111”,ItemWithCommodityType=“111”});
返回Json(lst,JsonRequestBehavior.AllowGet);
}
此外,我还更新了您的控制器代码

    public JsonResult _ItemDropdown()
    {
        var data = ReportEngineHelper.GetReportingEngine(Session).Generate<ItemDropDownQuery>().ToQueryModel<ItemDropDownModel>();
        return Json(data, JsonRequestBehavior.AllowGet);
    }
publicjsonresult\u ItemDropdown()
{
var data=reportenginehelp.GetReportingEngine(Session.Generate().ToQueryModel();
返回Json(数据,JsonRequestBehavior.AllowGet);
}
如果有任何问题,请告诉我

更新1:

查看

@( 
Html.Kendo().DropDownList()
    .Name("Itemdropdownlist")
    .DataTextField("FullItemName")
    .DataValueField("ItemID")
    .DataSource(source => source.Read(read => read.Action("_ItemDropdown", "Home")))
    .OptionLabel("Select an Item")) 
@( 
 Html.Kendo().DropDownList()
        .Name("Itemdropdownlist")
        .DataTextField("FullItemName")
        .DataValueField("ItemID")
        .DataSource(source => source.Read(read => read.Action("_ItemDropdown", "Home")))
        .OptionLabel("Select an Item")
        .Events(e =>
            {
                e.Change("onChanges");
            })
        )
<br />
@(
 Html.Kendo().Grid<MvcApplication1.Models.BinCard>()
    .Name("BinCardGrd")
    .AutoBind(false)
    .DataSource(dataSource => dataSource
        .Ajax()
        .Read(read => read.Action("_BinCard", "Home").Data("readItemIdFilter")))

        .Columns(columns =>
        {
            columns.Bound(c => c.Item).Width(550);
            columns.Bound(c => c.Unit).Width(100);
        }
    )
  .Sortable()

      )

<script>
    function readItemIdFilter() {

        var IID = $("#Itemdropdownlist").data("kendoDropDownList");

        var ddvalue = 0;
        debugger;
        if (IID.dataItem() && IID.dataItem().ItemID) {
            ddvalue = IID.dataItem().ItemID;
        }
        return {
            itemIDFilter: ddvalue
        };
    }

    function onChanges(e) {
        $('#BinCardGrd').data('kendoGrid').dataSource.read();
        $('#BinCardGrd').data('kendoGrid').refresh();
    }

</script>
@
Html.Kendo().DropDownList()
.Name(“Itemdropdownlist”)
.DataTextField(“FullItemName”)
.DataValueField(“ItemID”)
.DataSource(source=>source.Read(Read=>Read.Action(“\u ItemDropdown”,“Home”)))
.选项标签(“选择项目”)
.事件(e=>
{
e、 变更(“变更”);
})
)

@( Html.Kendo().Grid() .名称(“BinCardGrd”) .AutoBind(假) .DataSource(DataSource=>DataSource .Ajax() .Read(Read=>Read.Action(“\u BinCard”,“Home”).Data(“readItemIdFilter”)) .列(列=> { columns.Bound(c=>c.Item).Width(550); columns.Bound(c=>c.Unit).Width(100); } ) .Sortable() ) 函数readItemdFilter(){ 变量IID=$(“#Itemdropdownlist”).数据(“kendoDropDownList”); var-ddvalue=0; 调试器; if(IID.dataItem()&&IID.dataItem().ItemID){ ddvalue=IID.dataItem().ItemID; } 返回{ itemIDFilter:ddvalue }; } 功能更改(e){ $('#BinCardGrd').data('kendoGrid').dataSource.read(); $('#BinCardGrd').data('kendoGrid').refresh(); }
控制器

public JsonResult _ItemDropdown()
{
    List<ItemDropDownModel> lst = new List<ItemDropDownModel>();

    lst.Add(new ItemDropDownModel() { ItemID = 1, FullItemName = "1", ItemWithCommodityType = "1" });
    lst.Add(new ItemDropDownModel() { ItemID = 11, FullItemName = "11", ItemWithCommodityType = "11" });
    lst.Add(new ItemDropDownModel() { ItemID = 111, FullItemName = "111", ItemWithCommodityType = "111" });

    return Json(lst, JsonRequestBehavior.AllowGet);
}
public JsonResult _ItemDropdown()
{
    List<ItemDropDownModel> lst = new List<ItemDropDownModel>();

    lst.Add(new ItemDropDownModel() { ItemID = 1, FullItemName = "1", ItemWithCommodityType = "1" });
    lst.Add(new ItemDropDownModel() { ItemID = 11, FullItemName = "11", ItemWithCommodityType = "11" });
    lst.Add(new ItemDropDownModel() { ItemID = 111, FullItemName = "111", ItemWithCommodityType = "111" });

    return Json(lst, JsonRequestBehavior.AllowGet);
}

public ActionResult _BinCard([DataSourceRequest] DataSourceRequest request, int itemIDFilter)
{
    List<BinCard> lst = new List<BinCard>();
    lst.Add(new BinCard() { Item = "2", Unit = itemIDFilter.ToString() });
    lst.Add(new BinCard() { Item = "22", Unit = itemIDFilter.ToString() });
    lst.Add(new BinCard() { Item = "222", Unit = itemIDFilter.ToString() });

    return Json(lst.ToDataSourceResult(request));
}
publicjsonresult\u ItemDropdown()
{
List lst=新列表();
添加(新的ItemDropDownModel(){ItemID=1,FullItemName=“1”,ItemWithCommodityType=“1”});
添加(新的ItemDropDownModel(){ItemID=11,FullItemName=“11”,ItemWithCommodityType=“11”});
添加(新的ItemDropDownModel(){ItemID=111,FullItemName=“111”,ItemWithCommodityType=“111”});
返回Json(lst,JsonRequestBehavior.AllowGet);
}
public ActionResult\u BinCard([DataSourceRequest]DataSourceRequest请求,int ItemdFilter)
{
List lst=新列表();
lst.Add(new BinCard(){Item=“2”,Unit=itemdfilter.ToString()});
lst.Add(new BinCard(){Item=“22”,Unit=itemdfilter.ToString()});
lst.Add(new BinCard(){Item=“222”,Unit=itemdfilter.ToString()});
返回Json(lst.ToDataSourceResult(request));
}

检查您的url项目/\u项目下拉列表,查看浏览器上的数据。您还可以使用F12(开发人员工具)和查看网络选项卡。在最终版本中尽量避免使用JsonRequestBehavior.AllowGet。谢谢,但我需要的是将itemid从dropdownlist传递给一个控制器,该控制器将在要绑定网格的gridOn下拉选择更改事件中查看,对吗?是的,请。我似乎无法将下拉列表与网格绑定