根据单选按钮选择删除 jquery 数据表中的行 visualforce
remove rows on jquery datatable based on radiobutton selection visualforce
我一直在搜索,但无法找到如何使用单选按钮 select 值动态更改数据 table。我也在使用 bootstrap 以使事情看起来更好。
我希望我有更多的东西可以给你,但我是新手而且很迷茫,尽管我已经用谷歌搜索了几个小时。任何帮助将非常感激。
这是我的 javascript 和 jquery
<script>
var j$=jQuery.noConflict();
j$(document).ready(function(){
//BEGINNING OF DATA TABLE
var titleTable = j$('[id$="titletable"]').DataTable({
"order": [[1,"asc"]],
"columnDefs": [ {
"targets": 0,
"data": null,
"defaultContent": "<button class='btn btn-info'>Add to Queue</button>"
} ]
});//end of Data Table
j$('[id$=radioButtonValues]').on("change",function(event){
//titleTable.rows().remove() where
//j$('[id$=radioButtonValues]').val() only matches data in the 3rd column
});
</script>
这是我的 visualforce 代码
<apex:PageBlock >
<apex:outputLabel value="Display Games By Console!" id="consoleDisplayLabel"/>
<apex:selectRadio value="{!consoleValue}" id="radioButtonValues" >
<apex:selectOptions value="{!consoleOptions}" id="radioButtonOptions"/>
</apex:selectRadio>
</apex:PageBlock>
<apex:PageBlock >
<table id="titletable" class="display">
<thead>
<tr>
<th>Queue</th>
<th>Name</th>
<th>Console</th>
</tr>
</thead>
<tbody>
<apex:repeat value="{!titles}" var="title" >
<tr>
<td></td>
<td>{!title.Name}</td>
<td>{!title.Console__r.Name}</td>
</tr>
</apex:repeat>
</tbody>
</table>
</apex:pageBlock>
这是我的控制器
public class AdminPageController
{
public String consoleValue {get;set;}
private String sortOrder = 'Name';
List<Console__c> theseConsole = new List<Console__c>([Select id,name FROM Console__c ]);
public AdminPageController(){
consoleValue = 'ALL';
}//constructor
public List<SelectOption> getconsoleOptions(){
List<SelectOption> consoleOptions = new List<SelectOption>();
consoleOptions.add(new SelectOption('ALL', 'ALL'));
for(Console__c a : theseConsoles)
consoleOptions.add(new SelectOption(a.name,a.name));
return consoleOptions;
}
public List<Title__C> gettitles()
{
List <Title__C> titlebyConsole = new List<Title__c>();
if(consoleValue != 'All'){
String soql = 'SELECT Name, Console__r.Name FROM Title__c WHERE Title__C.Console__r.Name = :consoleValue' + ' ORDER BY ' +sortOrder;
titlebyConsole = Database.query(soql);
}
else{
String soql2 = 'SELECT Name, Console__r.Name from Title__c ORDER BY ' +sortOrder;
titlebyConsole = Database.query(soql2);
}
return titlebyConsole;
}//end of Get titles
}
我觉得您需要隐藏而不是删除该行。如果我是正确的,您需要通过扩展数据表来实现自定义搜索。这是一个例子:
$(function() {
var table = $('#titletable').DataTable();
$('input[type="radio"]').click(function() {
reset();
var selection = $(this).val();
$.fn.dataTable.ext.search.push(function(settings, data, dataIndex) {
//does this row contain the text of the value selected in the radio button?
return $(table.row(dataIndex).node()).text().indexOf(selection) >= 0;
});
table.draw();
});
function reset() {
$.fn.dataTable.ext.search.pop();
table.draw();
}
$('#reset').click(reset);
});
这里有一个 full fiddle 有一些假数据。
如果您需要删除行,那么您需要知道没有办法再次重新显示该行,除非您保留对它的引用并将其重新添加到 DataTables。您似乎很清楚 API 如何删除行。
我一直在搜索,但无法找到如何使用单选按钮 select 值动态更改数据 table。我也在使用 bootstrap 以使事情看起来更好。
我希望我有更多的东西可以给你,但我是新手而且很迷茫,尽管我已经用谷歌搜索了几个小时。任何帮助将非常感激。
这是我的 javascript 和 jquery
<script>
var j$=jQuery.noConflict();
j$(document).ready(function(){
//BEGINNING OF DATA TABLE
var titleTable = j$('[id$="titletable"]').DataTable({
"order": [[1,"asc"]],
"columnDefs": [ {
"targets": 0,
"data": null,
"defaultContent": "<button class='btn btn-info'>Add to Queue</button>"
} ]
});//end of Data Table
j$('[id$=radioButtonValues]').on("change",function(event){
//titleTable.rows().remove() where
//j$('[id$=radioButtonValues]').val() only matches data in the 3rd column
});
</script>
这是我的 visualforce 代码
<apex:PageBlock >
<apex:outputLabel value="Display Games By Console!" id="consoleDisplayLabel"/>
<apex:selectRadio value="{!consoleValue}" id="radioButtonValues" >
<apex:selectOptions value="{!consoleOptions}" id="radioButtonOptions"/>
</apex:selectRadio>
</apex:PageBlock>
<apex:PageBlock >
<table id="titletable" class="display">
<thead>
<tr>
<th>Queue</th>
<th>Name</th>
<th>Console</th>
</tr>
</thead>
<tbody>
<apex:repeat value="{!titles}" var="title" >
<tr>
<td></td>
<td>{!title.Name}</td>
<td>{!title.Console__r.Name}</td>
</tr>
</apex:repeat>
</tbody>
</table>
</apex:pageBlock>
这是我的控制器
public class AdminPageController
{
public String consoleValue {get;set;}
private String sortOrder = 'Name';
List<Console__c> theseConsole = new List<Console__c>([Select id,name FROM Console__c ]);
public AdminPageController(){
consoleValue = 'ALL';
}//constructor
public List<SelectOption> getconsoleOptions(){
List<SelectOption> consoleOptions = new List<SelectOption>();
consoleOptions.add(new SelectOption('ALL', 'ALL'));
for(Console__c a : theseConsoles)
consoleOptions.add(new SelectOption(a.name,a.name));
return consoleOptions;
}
public List<Title__C> gettitles()
{
List <Title__C> titlebyConsole = new List<Title__c>();
if(consoleValue != 'All'){
String soql = 'SELECT Name, Console__r.Name FROM Title__c WHERE Title__C.Console__r.Name = :consoleValue' + ' ORDER BY ' +sortOrder;
titlebyConsole = Database.query(soql);
}
else{
String soql2 = 'SELECT Name, Console__r.Name from Title__c ORDER BY ' +sortOrder;
titlebyConsole = Database.query(soql2);
}
return titlebyConsole;
}//end of Get titles
}
我觉得您需要隐藏而不是删除该行。如果我是正确的,您需要通过扩展数据表来实现自定义搜索。这是一个例子:
$(function() {
var table = $('#titletable').DataTable();
$('input[type="radio"]').click(function() {
reset();
var selection = $(this).val();
$.fn.dataTable.ext.search.push(function(settings, data, dataIndex) {
//does this row contain the text of the value selected in the radio button?
return $(table.row(dataIndex).node()).text().indexOf(selection) >= 0;
});
table.draw();
});
function reset() {
$.fn.dataTable.ext.search.pop();
table.draw();
}
$('#reset').click(reset);
});
这里有一个 full fiddle 有一些假数据。
如果您需要删除行,那么您需要知道没有办法再次重新显示该行,除非您保留对它的引用并将其重新添加到 DataTables。您似乎很清楚 API 如何删除行。