单击jqGrid中的行时填充下拉列表中的错误

时间:2011-02-24 10:48:00

标签: jqgrid jqgrid-asp.net

我想在单击该行时填充jqGrid单元格下拉列表。我点击了该行,但下拉列表没有填充。

我为编辑或点击行填充下拉列表而编写的代码是:

colModel: [
            { name: 'Emp_code', width: 50, sortable: false, align: "center" },
            { name: 'Emp_name', width: 200, sortable: false },
        //{ name: 'totalhours', width: 100, sortable: false, align: 'center', editable: true, edittype: "select", editoptions: { value: "1:1;2:2;3:3;4:4;5:5;6:6;7:7;8:8;9:9"} }
            {name: 'totalhours', index: 'totalhours', width: 100, sortable: false, align: 'center', editable: true, edittype: "select",
            editoptions:
            {
                dataInit: function(elem) {

                    $(elem).empty()
                    .append($('<option></option>').val("1").html("Apples"))
                    .append($('<option></option>').val("2").html("Oranges"));

                }
            }
        }
        ],

我想在行点击中填充totalhours列,其中将填充苹果和橙子,但不知何故,我得到空白的下拉列表。在行上单击下拉列表,但未填充。

2 个答案:

答案 0 :(得分:0)

如果您需要从服务器获取选项的选项,则应使用editoptions dataUrlbuildSelect。如果服务器返回JSON而不是像

那样的HTML片段
<select><option value="1">Apples</option><option value="2">Oranges</option></select>

可以使用buildSelect将服务器响应转换为格式。如果srever返回JSON格式的字符串,则buildSelect事件处理程序的实现可以将JSON字符串转换为该对象,然后从该对象构造字符串<select>...</select>

您可以找到相应的代码示例,例如here

答案 1 :(得分:0)

根据你的建议,我做了这个..

 colModel: [
            { name: 'Emp_code', width: 50, sortable: false, align: "center" },
            { name: 'Emp_name', width: 200, sortable: false },
        //{ name: 'totalhours', width: 100, sortable: false, align: 'center', editable: true, edittype: "select", editoptions: { value: "1:1;2:2;3:3;4:4;5:5;6:6;7:7;8:8;9:9"} }

           {name: 'totalhours', width: 100, sortable: false, align: 'center', editable: true, edittype: "select",
           editoptions: { dataUrl: '../Services/ServiceTest.asmx/GetListHours',
               buildSelect: function(data) {
                   alert('hello i am here ');
                   var response = jQuery.parseJSON(data.responseText);
                   var s = '<select>';
                   if (response && response.length) {
                       for (var i = 0, l = response.length; i < l; i++) {
                           var ri = response[i];
                           s += '<option value="' + ri + '">' + ri + '</option>';
                       }
                   }
                   return s + "</select>";
               }

           }
       }
        ],

和我要求的相应的webserivce我是:

public String GetListHours() 
    {
        List<int> list = new List<int> { };            
        for (int i = 0; i < 10; i++)
        {
            list.Add(i);
        }
        return JsonConvert.SerializeObject(list);
    }

但是当我点击该行时,下拉列表显示为空白...是否有任何应该通过的事件?当我点击一行时应该被解雇?填充下拉列表?以上是我试图根据你的建议实现的代码。但似乎它甚至没有调用dataurl来填充因为函数警报根本没有触发