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下拉选择更改事件中查看,对吗?是的,请。我似乎无法将下拉列表与网格绑定