自动完成功能不会在Controller上调用相应的操作。 在我的情况下,在自动完成的文本框中输入任何内容时,SharedContoller \ FindLocation不会被调用。休息所有的事情都很好。ASP.NET MVC,jQGrid中的自动完成功能不会调用数据控制器
宣言脚本:
<script src="../../Scripts/jquery-1.4.2.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui-1.8.custom.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.autocomplete.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.jqGrid.js" type="text/javascript"></script>
<script src="../../Scripts/js/jqModal.js" type="text/javascript"></script>
<script src="../../Scripts/js/jqDnR.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.maskedinput-1.2.2.min.js" type="text/javascript"></script>
<script src="../../Scripts/js/grid.locale-en.js" type="text/javascript"></script>
表声明:
<table id ="RegionAndCity" class="scroll" cellpadding="0" cellspacing="0"></table>
<div id="listPager" class="scroll" style="text-align:center;"></div>
最后的jqGrid和自动完成代码:
var PlanId = $("#PlanId").val();
var updateDialog = {
url: '<%= Url.Action("UpdateRegionAndCity", "BriefAllocation") %>'
, closeAfterAdd: true
, closeAfterEdit: true
, recreateForm: true
, modal: false,
onclickSubmit: function (params) {
var ajaxData = {};
var plannerName = $("#PlannerId :selected").text();
ajaxData = { PlanId: PlanId, PlannerName: plannerName,
LocationName: $("#LocationId :selected").text() };
return ajaxData;
}
};
$("#RegionAndCity").jqGrid({
url: '/BriefAllocation/GetRegionAndCities/?PlanId=' + PlanId,
datatype: 'json',
mtype: 'GET',
prmNames: { PlanId: PlanId },
colNames: ['RegionsAndCitiesId', 'LocationId', 'LocationName'],
colModel: [
{ name: 'RegionsAndCitiesId', index: 'RegionsAndCitiesId', width: 100,
align: 'left', /* key: true,*/editable: true,
editrules: { edithidden: false }, hidedlg: true, hidden: true },
{ name: 'LocationId', index: 'LocationId', width: 150, align: 'left',
editable: false, edittype: 'select', editoptions: { value: countries },
editrules: { required: true }, formoptions: { elmsuffix: ' *'} },
{ name: 'LocationName', index: 'LocationName', width: 300, align: 'left',
editable: true, edittype: 'text',
editoptions: { dataInit:
function (elem) {
setTimeout(function() {
$(elem).autocomplete('/Shared/FindLocation/', {
dataType: "json",
multiple: false,
formatItem: function (item, index, total, query) {
return item.value;
},
parse: function (data) {
return $.map(data, function (item) {
return {
data: item,
value: item.Key,
result: item.value
}
});
}
}).result(function (event, row) {
$("#LocationId").val(row.Key);
});
}, 100);
}
}, editrules: { required: true }
}],
pager: $('#listPager'),
rowNum: 10,
rowList: [5, 10, 20, 50],
sortname: 'RegionsAndCitiesId',
sortorder: "asc",
viewrecords: true,
imgpath: '/scripts/themes/steel/images',
caption: '<b>Regions And Cities</b>',
ondblClickRow: function (rowid, iRow, iCol, e) {
$("#RegionAndCity").editGridRow(rowid, prmGridDialog);
}
}).navGrid('#listPager', { edit: true, add: true, del: true, refresh: true },
updateDialog,
updateDialog,
updateDialog);
});
自动完成调用SharedController \ FindLocation。代码是:
public ActionResult FindLocation(string q, int limit)
{
return Content("");
}
此方法不会被调用。我也试过:
public ActionResult FindLocation()
{
return Content("");
}
这也不会被调用。如果自动完成与html文本框一起使用,带参数的FindLocation可以正常工作。
我帮我找到问题。几乎所有的帖子都从这两天开始工作..
谢谢, Bhoomi。
我使用的是旧版本的jqgrid,所以我从http://github.com/tonytomov/jqGrid下载了新版本。 – Bhoomi 2010-09-11 17:38:07
对不起,我点击添加评论。我使用的是旧版本的jqgrid,所以从最新版本开始。表现在根本没有加载。我带走了所有新的.js文件并引用它。试图删除AutoComplete代码也普通表现在也不工作。任何线索?它是否适用于ASP.NET MVC? – Bhoomi 2010-09-11 17:40:10
@Bhoomi:你可以发布当前从控制动作发回的JSON数据到jqGrid吗?你希望我帮你发布足够的数据,以便能够重现你的问题。例如,在您的HTML片段中,不存在具有ID PlanId,PlannerId和LocationId的元素。你有jqGrid之外的LocataionId并且煽动了吗?可以'RegionsAndCitiesId'是你行的ID吗?哪个版本的ASP.NET MVC和您使用的Visual Studio版本? – Oleg 2010-09-11 18:01:53