使用的jqGrid 4.5.2 &試圖把根據需要一個下拉框或按鈕(取決於在該行的數據的值)在結合下拉或按鈕。我將這個下拉框的內容存儲在頁面&中的一個變量中,並將其分配給一個自定義的格式化程序。下拉框如下:的jqGrid - 每一行
<select id="rlist" class="choices" name="rlist">
<option value="0" disabled="disabled" selected="selected">Select Message</option>
<option value="7">Message2</option>
<option value="8">Message3</option>
<option value="9">Message4</option>
<option value="10">Message5</option>
</select>
該按鈕的代碼是:
"<input name='reviewedBtn' class='cbox' style='height:90%;width:60%' type='submit' value='Reviewed' />";
我檢索了以下數據XML
格式&中的jqGrid顯示它。
<Rowset>
<Row>
<msgTxt>Test Message3</msgTxt>
<SendTime>2013-06-18T15:05:59</SendTime>
<pID>4</pID>
</Row>
<Row>
<msgTxt>Test Message2</msgTxt>
<SendTime>2013-06-18T13:01:46</SendTime>
<pID>4</pID>
</Row>
<Row>
<msgTxt>Test Message1</msgTxt>
<SendTime>2013-06-18T09:22:49</SendTime>
<pID>3</pID>
</Row>
<Row>
<msgTxt>Test Message0</msgTxt>
<SendTime>2013-06-18T08:59:38</SendTime>
<pID>1</pID>
</Row>
</Rowset>
的的jqGrid本身將只具有字段msgTxt
和顯示SendTime
(pID
是一個隱藏的字段)。網格中會有第三列,用於下拉/提交按鈕。對於pID
= 4的行,這些行應在每個行上顯示下拉框。 pID
= 3的行應該顯示一個submit
按鈕。 pID
= 1應該沒有顯示在第3列中。以下是我的colModel
的簡化版本。
colModel:[
{name:"SendTime",index:"SendTime",width:col1width,align:"center",formatter:"date",formatoptions: {"srcformat":"ISO8601Long", "newformat":"Y-m-d H:i:s"},xmlmap:"Rowset>Row>SendTime",sortable:false},
{name:"msgTxt",index:"msgTxt",width:col2width,align:"left",xmlmap:"Rowset>Row>msgTxt",sortable:false},
{name:"action",
width:col3width,
align:"center",
title:false,
formatter: function(cellvalue, options, rowObject) {
var pri = $(rowObject).find("pID").text();
if (pri === "4") {
return msgSelect;
}
if (pri === "3") {
return "<input name='reviewedBtn' class='cbox' style='height:90%;width:60%' type='submit' value='Reviewed' />";
}
else {
return ""
}
}
},
{name:"pID",index:"pID",width:col4width,align:"left",xmlmap:"Rowset>Row>pID",sortable:false, hidden:true}
],
我在beforeSelectRow
套住開放&下拉框的變化下面的代碼。
beforeSelectRow: function(id, e) {
var $self = $("#myGrid");
var $td = $(e.target).closest("td");
var iCol = $.jgrid.getCellIndex($td[0]);
var name = $(e.target).attr("name");
if (this.p.colModel[iCol].name === "action") {
if (name === "rlist") {
selected = $(this).val();
console.log("responselist open);
$("#rlist").change(function(){
var ritem = $(this[this.selectedIndex]).val();
var ritemtext = $(this[this.selectedIndex]).text();
console.log("response list changed " + ritemtext + " id = " + id);
return false;
});// response list changed
return false;
} // if rlist
if (name === "reviewedBtn") {
console.log("reviewedBtn clicked");
return false;
} // if reviewedBtn selected
} // if Action Column
return false;
}, // beforeSelectRow
在上面的數據例如,對於行1,下拉功能,因爲它應該 - I檢測下拉的開口和它的變化。不過,如果我打開下拉上行2,它檢測到的下拉開口,但從來沒有在下拉菜單中更改事件一旦做出選擇。 (注:我刪除了一些代碼,刷新電網中以簡化我發佈的代碼然而,當我有console.log
報表在哪裏,我跟蹤了什麼是應該發生。)。
所有的jqGrid的例子我已經看到了迄今爲止對付編輯的數據,這我沒有做。我相信我在自定義格式化程序中做錯了什麼,但我不知道是什麼。我很感激任何幫助或建議如何解決這個問題或我如何解決這個問題。
謝謝!