jqgrid内联编辑自动完成下拉列表

jqgrid内联编辑自动完成下拉列表,jqgrid,Jqgrid,在Oleg帖子中找到了答案,但无法解决我的问题。 我有一个带内联编辑的jqGrid。那很好。一列“SupervisorUserID”有一个下拉框,其中包含已从数据库查询中检索到的条目列表 由于条目太多,我希望有一个输入字段,它将自动完成/搜索下拉列表 请帮助我实现这一目标。谢谢 我的代码 public JsonResult PersonnelManagementGrid(string sidx, string sord, int page, int rows) { objPerson

在Oleg帖子中找到了答案,但无法解决我的问题。 我有一个带内联编辑的jqGrid。那很好。一列“SupervisorUserID”有一个下拉框,其中包含已从数据库查询中检索到的条目列表

由于条目太多,我希望有一个输入字段,它将自动完成/搜索下拉列表

请帮助我实现这一目标。谢谢

我的代码

 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个值。如果我选择一行,则该特定行的下拉单元格将为