Jqgrid buildSelect 函数出现问题

本文关键字:问题 函数 buildSelect Jqgrid | 更新日期: 2023-09-27 18:31:01

Using jqGrid ver 5.0.1

我很难使用 buildSelect 函数显示选择列表。 我已经尝试了许多在SO上找到的解决方案,但似乎都有相同的问题-列表中填充了"未定义"。 这是我当前的代码:

{name: "Status", width: 150,
editable: true, edittype: "select",
editoptions: {
        dataUrl: "Handler3.ashx",
        buildSelect: function (data) {
            alert(data);
            var select = '<select>', i, l = data.length, item;
            for (i = 0; i < l; i++) {
                item = data[i];
                select += '<option value="' + item.value + '">' + item.name + '</option>';
            }
            return select + '</select>';
        }
    }

},

从 dataUrl(在警报处)返回的数据如下所示:

[{"value":6,"name":"ASSIGNED"},{"value":16,"name":"BLANK"},{"value":14,"name":"CANCELLED"},{"value":3,"name":"COMPLETE"},{"value":15,"name":"HOLD 1ST QTR"},{"value":5,"name":"NEW"},{"value":8,"name":"NOTE"},{"value":7,"name":"ON HOLD"},{"value":4,"name":"PRODUCTION"},{"value":11,"name":"PROPOSED SOLUTION"},{"value":13,"name":"STAGING"},{"value":12,"name":"TESTING"},{"value":9,"name":"WAITING"},{"value":10,"name":"WORKING"}]

Handler3.ashx 中的代码只是执行 SQL 选择并返回数据:

                    SqlDataAdapter adapter = new SqlDataAdapter("SELECT LKPID AS value, LKPDESC AS name FROM dbo.PRJLOOKUPS WHERE LKPTYPE = " + "'SCD'" + " AND LKPRSPO <> " + "'INACTIVE'" + " ORDER BY LKPDESC", con);
                adapter.Fill(ds);
                int num = ds.Tables[0].Rows.Count;
                context.Response.ContentType = "application/json";
                context.Response.Write(JsonConvert.SerializeObject(ds.Tables[0]));

我还尝试在处理程序中调用 SQL 存储过程以在 Ajax 调用中返回格式化字符串,并在加载完成中设置编辑选项值。 返回的字符串为:

[{"Column1":"6:ASSIGNED;16:BLANK;14:CANCELLED;3:COMPLETE;15:HOLD 1ST QTR;5:NEW;8:NOTE;7:ON HOLD;4:PRODUCTION;11:PROPOSED SOLUTION;13:STAGING;12:TESTING;9:WAITING;10:WORKING"}]

这有点用,但列表中的第一项看起来像"已分配,最后一项看起来像"正在工作"}]

谁能向我指出我在buildSelect上做错了什么?

Jqgrid buildSelect 函数出现问题

alert(data)应该无法显示正确的返回数据。它应该只显示类似于"类型对象"的内容。如果您按alert(data)看到字符串,则可以按使用情况解决问题

data = $.parseJSON(data);

直接在buildSelect开头,在处理数据之前