我正在使用jqGrid 4.5.2并使用自定义格式化程序根据其他(隐藏)单元格中的值在jqGrid行的单元格中构建下拉框 .
下拉框的选择是从查询结果构建到SQL表的 . 另外,我还在它前面加了一行作为教学信息 . 下拉列表构建如下:
function getMsgs() {
$.ajax({
type: "GET",
url: myUrl,
dataType: "xml",
success: function(data) {
var select = $("#msglist");
var selectline = $("Select Message");
select.prepend(selectline);
$(data).find("Row").each(function() {
var ctid = $(this).find("CannedTextID").text();
var dtext = $(this).find("DisplayText").text();
var option = $("" + dtext + "");
option.prop("value", ctid);
select.append(option);
});
// make the instructional message unselectable
$("#msglist option[value='0']").attr("disabled", "disabled");
}
});
msgSelect = $("#msglist").select();
}
结果放在页面中的表格中,HTML如下:
Select Message
Message2
Message3
Message4
Message5
Message6
Message7
Intermittent problems
Local Network Connectivity issue
Message15
在函数结束时,我设置了一个全局变量 msgSelect = $("#msglist").select();
在格式化程序中,在符合下拉列表的条件下,我返回:
return msgSelect[0].outerHTML;
这将显示jqGrid中的下拉框,但不是显示第一行= Select Message 作为初始下拉框,而是显示 Message2 . 在jqGrid行中, Select Message 显示为灰色且无法选择,但下拉列表默认为第二行 . select 与我在页面上其他位置的下拉框中的HTML相同(即 Select Message 已禁用,并且未在任何位置设置为默认值) .
为什么jqGrid自定义格式化程序以不同方式显示HTML,即使代码完全相同?