我使用Datatables获得了一个数据表。我创建并填充了表格,如下所示。现在我需要实现一个组合框(假设我有2010,2011,2012)以允许用户选择一年。然后当用户单击View或Modify链接时,将其放置在表中,选定的年份将作为参数传递给另一个页面。
现在我怎样才能将年份专栏变成一个组合框?
rulesTableGlobal = $('#rulesTable').dataTable( {
//"bJQueryUI": true,
"sPaginationType": "full_numbers",
"aoColumns": [
{ "sTitle": "Id", "sWidth" : "20px" },
{ "sTitle": "Property ID" , "sWidth" : "20px"},
{ "sTitle": "Adress" , "sWidth" : "130px"},
{ "sTitle": "Suburb" , "sWidth" : "50px"},
{ "sTitle": "Bond", "sWidth" : "25px" },
{ "sTitle": "Year", "sWidth" : "25px" , "aType": "dom-select"},
{ "sTitle": "View or Modify" , "sWidth" : "50px"}]
});
function addPropertyToTable( lt_id, lt_uid, address, suburb_name, min_guests, max_guests,
bondFee,cleaningFee,bookingServiceFee, weekly_rate,nightly_rate){
var _lt_id = "\'" + lt_id + "\'";
var viewLink = '<A href="#" onclick="forwardDetails('+_lt_id+');">View and Modify</A>';
var year= "";
$('#rulesTable').dataTable().fnAddData( [
lt_id, lt_uid, address, suburb_name, bondFee,cleaningFee,bookingServiceFee, weekly_rate,nightly_rate, min_guests, max_guests, year, viewLink ] );
}
});
}
答案 0 :(得分:3)
这是我用于遇到同样问题的人的解决方案。创建组合框并添加到第12列.Regards .. Ozlem。
function init(){
//http://stackoverflow.com/questions/2759837/adding-dropdown-list-to-the-particular-column-using-jquery
var ind = 0;
var year = 2010;
//var options = getYears(year, 3);
$.each($('#rulesTable td:nth-child(12)'), function () {
//creates a combobox
var select = document.createElement('select');
select.setAttribute('class','year');
select.setAttribute('name',ind+'');
select.setAttribute('id','comboYear'+ind);
select.innerHTML = '<option value=2010>2010</option><option value=2011>2011</option><option value=2012>2012</option>';
/*for (var i= 0 ; i<options.length; i++){
var nextOption = options[i];
select.appendChild(nextOption);
}*/
$(this).append(select);
$('#comboYear'+ind).change(function () {
var comboId = $(this).attr('id');
var comboIndex = $(this).attr('name');
var yearSelected = $('#'+comboId+' option:selected').text();
var propertyId = rulesTableGlobal.fnGetData()[comboIndex][0];
//alert(text);
upDateRow(propertyId, yearSelected, comboIndex );
});
year = year+1;
ind++;
});
}
答案 1 :(得分:1)
在HTML中定义您的组合框,如下所示:
<select id="year">
<option value="2010">2010</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
</select>
每当您需要组合框的实际选定值时,您可以调用
$("#year").val()
最好不要重复jQuery DOM查找,所以你可能想这样做:
// Define this on document ready
var selectYear = $("#year");
// Use this syntax to get the current value
selectYear.val()
我无法从您的示例代码中看到您将使用此代码(可能在行var year = "";
中,如果是这样,请将其更改为var year = selectYear.val();
),但我希望这可以帮助您实现目标。如果没有,请随时在评论中询问更多信息。
编辑:根据要求提供样本以在正常表格中显示年份选择。
<table>
<tr>
<td>a cell</td>
<td>
<select id="year">
<option value="2010">2010</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
</select>
</td>
</tr>
</table>
答案 2 :(得分:0)
使用fnRender -
$('#example').dataTable( {
aoColumns : [ {
fnRender : function(oObj) {
return '<select id="year">' + '<option value="2010">2010</option>' + '<option value="2011">2011</option>' + '<option value="2012">2012</option>' + '</select> ';
}
} ]
});