这就是问题所在,当我定义 ddl(下拉列表或选择框)时,我不知道所选值。当用户编辑一行时,用户可以从列表中选择一个项目。但未设置所选项目。我想在用户单击按钮编辑行时设置所选项目。
我认为正确的方法是获取构建 jqGrid 时创建的 ddl 并设置所选值。
$("#list").jqGrid({
datatype: 'clientSide',
colNames: ['Edit', 'Delete', 'Save', 'Cancel', 'Location'],
colModel: [
....
....
{ name: 'Location', index: 'Location', width: 90, editable: true, edittype: "select", editoptions: { value: SI:System Integration ; IM:Information Management ; IA:Industrial Automation ; CI:Custom Instrumentation}}]
});
当用户单击编辑按钮时,我从 ddl 列表中获取数据
var locationText = $("#list").getRowData(rowNum).Location;
locationText =
<SELECT id=1_Location class=editable><OPTION value="R ">Rochester</OPTION><OPTION selected value="MA ">Massachusetts</OPTION><OPTION value="DL ">Data Librarian</OPTION><OPTION value="Buff ">Buffalo / Niagara Falls</OPTION><OPTION value="Bing ">Binghamton / Owego / Southern Tier</OPTION><OPTION value="Other ">All other locations</OPTION><OPTION value="Alb ">Albany and all points East</OPTION><OPTION value=""></OPTION></SELECT>
而不是从 jqGrid 中的单元格获取数据,我宁愿获取 dom ddl 元素对象。
我有的另一个想法,但不认为是正确的,是使用 locationText 并使用它来创建一个新的 ddl dom 元素。
像这样的东西。
var locationTmp2 = document.createElement("select");
locationTmp2.innerHTML = locationText;
or
locationTmp2.text= locationText;
有没有一种简单的方法来做我想做的事情。我知道我可以创建一个新的 dom 选择元素,然后向其中添加每个选项,就像这样
//populate and set the selected item for locations.
var locationSelect = document.createElement("select");
var arrayLocations = ('R:Rochester;MA:Massachusetts;DL:Data Librarian;Buff:Buffalo/Niagara Falls;Bing :Binghamton / Owego / Southern Tier;Other:All other locations;Alb:Albany and all points East;').split(";");
for (var i = 0; i < arrayLocations.length - 1; i++) {
var optionItem = document.createElement("option");
optionItem.value = trim(arrayLocations[i].split(":")[0]);
optionItem.text = trim(arrayLocations[i].split(":")[1]);
//check if this should be the selected item.
if (arrayLocations[i].indexOf(rowData.Location) != -1)
optionItem.selected = true;
locationSelect.add(optionItem);
}
但是应该有一种方法可以从 jqGrid 中获取整个 dom 元素。
谢谢