jqgrid内联编辑自动完成下拉列表
在Oleg帖子中找到了答案,但无法解决我的问题。 我有一个带内联编辑的jqGrid。那很好。一列“SupervisorUserID”有一个下拉框,其中包含已从数据库查询中检索到的条目列表 由于条目太多,我希望有一个输入字段,它将自动完成/搜索下拉列表 请帮助我实现这一目标。谢谢 我的代码jqgrid内联编辑自动完成下拉列表,jqgrid,Jqgrid,在Oleg帖子中找到了答案,但无法解决我的问题。 我有一个带内联编辑的jqGrid。那很好。一列“SupervisorUserID”有一个下拉框,其中包含已从数据库查询中检索到的条目列表 由于条目太多,我希望有一个输入字段,它将自动完成/搜索下拉列表 请帮助我实现这一目标。谢谢 我的代码 public JsonResult PersonnelManagementGrid(string sidx, string sord, int page, int rows) { objPerson
public JsonResult PersonnelManagementGrid(string sidx, string sord, int page, int rows)
{
objPersonnelManagementViewModel = new PersonnelManagementViewModel();
objPersonnelManagementViewModel.PersonnelManagementModelList = (List<PersonnelManagementModel>) Session["PersonnelList"];
var results = objPersonnelManagementViewModel.PersonnelManagementModelList.Select(x => new
{
x.UserID,
x.Name,
x.InActive,
x.SupervisorUserID,
});
int pageIndex = Convert.ToInt16(page) - 1;
int pageSize = rows;
int totalRecords = results.Count();
var totalPages = (int)Math.Ceiling((float)totalRecords / (float)rows);
if (sord.ToUpper() == "DESC")
{ results = results.OrderByDescending(e => e.Name); }
else { results = results.OrderBy(e => e.Name); }
results = results.Skip(pageIndex * pageSize).Take(pageSize);
var sbLocations = new System.Text.StringBuilder();
Dictionary<string, string> personnelList = new Dictionary<string, string>();
personnelList = objPersonnelManagementViewModel.PersonnelManagementModelList.ToDictionary(x => x.UserID, x => x.Name);
//personnelList.Add("1","one");
//personnelList.Add("2", "two");
//personnelList.Add("3", "three");
foreach (var sortedLocation in personnelList)
{
sbLocations.Append(sortedLocation.Key);
sbLocations.Append(':');
sbLocations.Append(sortedLocation.Value);
sbLocations.Append(';');
}
if (sbLocations.Length > 0)
sbLocations.Length -= 1; // remove last ';'
var jsonResults = new
{
colModelOptions = new
{
SupervisorUserID = new
{
formatter = "select",
edittype = "select",
editoptions = new
{
value = sbLocations.ToString()
}
}
},
total = totalPages,
page,
records = totalRecords,
rows= results,
};
return Json(jsonResults, JsonRequestBehavior.AllowGet);
}
publicJSONResult人事管理网格(字符串sidx、字符串sord、int-page、int-rows)
{
objPersonnelManagementViewModel=新的PersonnelManagementViewModel();
objPersonnelManagementViewModel.PersonnelManagementModelList=(列表)会话[“PersonnelList”];
var results=objPersonnelManagementViewModel.PersonnelManagementModelList.Select(x=>new
{
x、 用户ID,
x、 名字,
x、 不活跃,
x、 SupervisorUserID,
});
int pageIndex=Convert.ToInt16(第页)-1;
int pageSize=行;
int totalRecords=results.Count();
var totalPages=(int)数学上限((float)totalRecords/(float)行);
if(sord.ToUpper()=“DESC”)
{results=results.OrderByDescending(e=>e.Name);}
else{results=results.OrderBy(e=>e.Name);}
结果=结果。跳过(页面索引*页面大小)。获取(页面大小);
var sbLocations=new System.Text.StringBuilder();
Dictionary personellist=新字典();
personnelList=objPersonnelManagementViewModel.PersonnelManagementModelList.ToDictionary(x=>x.UserID,x=>x.Name);
//人员列表。添加(“1”、“1”);
//添加(“2”、“2”);
//添加(“3”、“3”);
foreach(人员列表中的var分类位置)
{
sbLocations.Append(sortedLocation.Key);
sbLocations.Append(“:”);
sbLocations.Append(sortedLocation.Value);
sbLocations.Append(“;”);
}
如果(sbLocations.Length>0)
sbLocations.Length-=1;//删除最后一个“;”
var jsonResults=new
{
colmodelpoptions=new
{
SupervisorUserID=新建
{
格式化程序=“选择”,
edittype=“选择”,
编辑选项=新建
{
value=sbLocations.ToString()
}
}
},
总计=总页数,
页
记录=总记录,
行=结果,
};
返回Json(jsonResults、JsonRequestBehavior.AllowGet);
}
Jquery:
$(function () {
$("#PersonnelManagementGrid").jqGrid({
url: '/PersonnelManagement/PersonnelManagementGrid',
datatype: "json",
contentType: "application/json; charset-utf-8",
mtype: 'Get',
colNames: ['UserID', 'Name', 'Role', 'Active?', 'Supervisor', 'Change Active', 'Try Delete'],
colModel: [
{ key: true, name: 'UserID', index: 'UserID', hidden: true },
{
name: 'Name', index: 'Name', editable: false, width: "460", sortable: true,
},
{
name: 'Role', index: 'Role', editable: false, width: "200", sortable: true,
},
{
name: 'InActive', index: 'InActive', editable: false, width: "200", sortable: true,
},
{
name: 'SupervisorUserID', index: 'SupervisorUserID', editable: true, formatter: 'select', width: "200", sortable: true,
edittype: 'select', width: "200", align: "center",
},
{
name: "Change Active", sortable: false, width: "200", align: "center",
formatter: function (cellvalue, options, rowObj) {
var cBtn = '<input type="button" class="button" value="Change" onclick= "changeActive(' + "'" + rowObj.id + "','" + "values" + "','" + "values" + '\')"/>'
return cBtn;
}
},
{
name: "Try Delete", sortable: false, width: "200", align: "center",
formatter: function (cellvalue, options, rowObj) {
var cBtn = '<input type="button" value="Delete" onclick= "tryDelete(' + "'" + rowObj.id + "','" + "values" + "','" + "values" + '\')"/>'
return cBtn;
}
}
],
beforeProcessing: function (response) {
var $self = $(this),
options = response.colModelOptions, p;
if (options != null) {
for (p in options) {
if (options.hasOwnProperty(p)) {
$self.jqGrid("setColProp", p, options[p]);
}
}
}
},
pager: jQuery('#pager'),
rowNum: 15,
rowList: [5, 10, 15],
height: '100%',
width: '1328',
viewrecords: true,
caption: 'Personnel Management',
//loadonce: true,
emptyrecords: 'No records to display',
scrollerbar: false,
jsonReader: {
root: "rows",
page: "pagenumbers",
total: "totalnumbers",
records: "records",
repeatitems: false,
id: "0"
},
hidegrid: false,
multiselect: false,
onSelectRow: function (id) {
rowSelect(id);
},
}).navGrid('#pager', { edit: false, add: false, del: false, search: false, cancel: false, reload: false, refresh: false });
});
$(函数(){
$(“#人事管理网格”).jqGrid({
url:“/PersonnelManagement/PersonnelManagementGrid”,
数据类型:“json”,
contentType:“application/json;charset-utf-8”,
mtype:'获取',
colNames:['UserID','Name','Role','Active','Supervisor','Change Active','Try Delete'],
colModel:[
{key:true,name:'UserID',index:'UserID',hidden:true},
{
名称:“名称”,索引:“名称”,可编辑:false,宽度:“460”,可排序:true,
},
{
名称:“角色”,索引:“角色”,可编辑:false,宽度:“200”,可排序:true,
},
{
名称:“非活动”,索引:“非活动”,可编辑:false,宽度:“200”,可排序:true,
},
{
名称:'SupervisorUserID',索引:'SupervisorUserID',可编辑:true,格式化程序:'select',宽度:'200',可排序:true,
编辑类型:“选择”,宽度:“200”,对齐:“居中”,
},
{
名称:“更改活动”,可排序:false,宽度:“200”,对齐:“居中”,
格式化程序:函数(cellvalue、options、rowObj){
var cBtn='请在所有问题中包含关于jqGrid版本的信息,您使用的版本以及jqGrid的分支。在网格中发布大约数量的项目(100、1000、10000、100000等)也很有帮助。信息“条目太多”太不清楚了。此外,您没有使用内联编辑集成的标准方式(格式化程序:“操作”
,内联AV
等等)。您想在内联编辑中使用autocomplete,但您没有包含任何代码,这显示了您如何开始/使用内联编辑。顺便说一句,您当前的服务器代码代码似乎错误地实现了服务器端排序:如果总是按Name
列排序。不是吗?请再说一句。查看和@Oleg:非常感谢您的快速评论。Sorry忘了提及。我使用的是Jquery.jqgridv4.4.4。实际上,下拉列表包含100-1000个值。若我选择一行,那个特定行的下拉单元格将变得可编辑,我想要的是,我需要一个输入字段和我的下拉列表一起键入输入,它将搜索并列出下拉列表中的值。例如:如果我键入“K”,K相关的值需要在下拉列表中列出,同样,下拉列表值也应该根据我的运行输入进行更改。请建议我实现这一点。@Oleg:此外,我不需要筛选工具栏,还需要进行排序。请在所有问题中包含有关您所使用的jqGrid版本的信息使用jqGrid的哪个分支和哪个分支。在网格中发布大约数量的项目(100、1000、10000、100000等)也很有帮助。信息“条目太多”太不清楚。此外,您没有使用标准的内联编辑集成方式(格式化程序:“操作”
,内联AV
等等)。您想在内联编辑中使用autocomplete,但您没有包含任何代码,这显示了您如何开始/使用内联编辑。顺便说一句,您当前的服务器代码代码似乎错误地实现了服务器端排序:如果总是按Name
列排序。不是吗?请再说一句。查看和@Oleg:非常感谢您的快速评论。Sorry忘了提到。我使用的是Jquery.jqgridv4.4.4。实际上,下拉列表包含100-1000个值。如果我选择一行,则该特定行的下拉单元格将为