我有一个问题,使用jQuery DataTables插件控制表的宽度.该表应该是容器宽度的100%,但最终是任意宽度,而不是容器宽度.
建议表示赞赏
表声明如下所示
<table id="querytableDatasets" class="display" cellspacing="0"
cellpadding="3" width="100%">
Run Code Online (Sandbox Code Playgroud)
和javascript
jQuery('#tab-datasets').load('/cgi-bin/qryDatasets', '', function (){
jQuery('#querytableDatasets').dataTable({
"bPaginate": false,
"bInfo": false,
"bFilter": false
});
}); `
Run Code Online (Sandbox Code Playgroud)
检查Firebug中的HTML,你会看到这一点(注意添加的样式="width:0px;")
<table id="querytableDatasets" class="display" cellspacing="0"
cellpadding="3" width="100%" style="width: 0px;">
Run Code Online (Sandbox Code Playgroud)
在样式中查看Firebug,table.display样式已被覆盖.看不出这是从哪里来的
element.style {
width:0;}
-- dataTables.css (line 84
table.display {
margin:0 auto;
width:100%;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试正确地抑制DataTables中的警告(警报).DataTables的标准行为是在发生错误时抛出javascript警报; 但是,这对我来说当前不方便.我一直在尝试将警告转换为javascript错误
$.fn.dataTableExt.sErrMode = 'throw';
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,但这会停止当前的javascript执行,这不是我想要的.因此,我将DataTables操作(init和更改)包装在try-catch中,没有错误处理; 但是,这也会停止javascript执行.(在Chrome和Firefox上测试过)
我的问题是如何为了调试而去除这些错误/警报?我正在尝试调试脚本的其他部分,但这些警报会继续阻碍.
在旧版本的数据表(高达1.7.?),我以前可以有一个与一个两行列标题,其中分选顶行中完成一个表,包括在列名,和过滤用的输入和选择在第二行完成.
<table>
<thead>
<tr>
<th>Col 1</th>
<th>Col 2</th>
<th>Col 3</th>
</tr>
<tr>
<td><input type="text" /></td>
<td><select><option ....></select></td>
<td><input type="text" /></td>
</tr>
</thead>
<tbody>...
Run Code Online (Sandbox Code Playgroud)
对于更高版本,包括最新版本(1.9.0),这不再有效,因为可排序标头将应用于第二行而不是第一行.有没有办法让这个工作,而不诉诸http://code.google.com/p/jquery-datatables-column-filter/等额外的插件 ?
对此有很多疑问,但我从来没有找到一个对我有用的问题.我有一个简单而简单的HTML表,其中正在填充来自AJAX调用的行.然后我想用DataTable插件更新表,但它不起作用.我有一个HTML表,看起来像这样:
<table id="myTable">
<thead>
<tr>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
在我的jQuery页面加载中
$(document).ready(function(){
var oTable = $('#myTable').dataTable({
"aoColumns": [
{ "bSortable": false },
null, null, null, null
]
});
});
Run Code Online (Sandbox Code Playgroud)
最后我的下拉列表更改功能
$("#dropdownlist").on("change", function () {
$("tbody").empty();
$.ajax({
type: "POST",
url: "@Url.Action("ActionHere", "Controller")",
dataType: "json",
success: function (data) {
$.each(data, function (key, item) {
$("tbody").append("<tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td></tr>");
});
}
})
var oTable = $('#myTable').dataTable(); // Nothing happens
var oTable = $('#myTable').dataTable({ // Cannot initialize it again error
"aoColumns": [ …Run Code Online (Sandbox Code Playgroud) 假设您有一个包含数十万行的"Cars"表,并且您想要进行GROUP BY:
SELECT CarID
, CarName
, COUNT(*) AS Total
FROM dbo.tbl_Cars
GROUP BY CarID
, CarName
Run Code Online (Sandbox Code Playgroud)
分组会给您留下类似于以下内容的结果:
CarID CarName Total
1872 Olds 202,121
547841 BMW 175,298
9877 Ford 10,241
Run Code Online (Sandbox Code Playgroud)
一切都很好.我的问题是,在性能和清晰编码方面,将Total和MAX Total分成一个表的最佳方法是什么,所以你得到的结果如下:
CarID CarName Total Max Total
1872 Olds 202,121 202,121
547841 BMW 175,298 202,121
9877 Ford 10,241 202,121
Run Code Online (Sandbox Code Playgroud)
一种方法是将GROUP结果放入临时表,然后将临时表中的MAX转换为局部变量.但我想知道最好的方法是什么.
UPDATE
Common Table Expression似乎是最优雅的,但与@EBarr类似,我的有限测试表明性能明显变慢.所以我不会参加CTE.
由于@EBarr对该COMPUTE选项的链接表明该功能已被弃用,这似乎也不是最佳路由.
MAX值的局部变量选项和临时表的使用可能是我失败的路线,因为我不知道它的性能问题.
关于我的用例的更多细节:它可能最终成为一系列其他SO问题.但足以说我正在将一大部分数据加载到临时表中(因此tbl_Cars的一个子集进入#tbl_Cars,甚至#tbl_Cars可能会进一步过滤并对其执行聚合),因为我必须在单个存储过程中对其执行多个过滤和聚合查询,该过程返回多个结果集.
更新2
@ EBarr使用窗口函数很好很短.自我注意:如果使用a RIGHT JOIN到外部引用表,该COUNT()
函数应该从tbl_Cars中选择一列,而不是'*'.
SELECT M.MachineID
, M.MachineType
, COUNT(C.CarID) AS Total
, MAX(COUNT(C.CarID)) OVER() …Run Code Online (Sandbox Code Playgroud) 这个问题是针对lodash的.
给定两个对象数组,使用另一个数组的对象过滤一个数组的最佳方法是什么?我试图在下面提出一个场景,我这样做的方式是使用两个.forEach循环,但我想知道如果使用lodash,有更好的方法来进行这种类型的过滤.
users.
var users = [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'joe', 'age': 40, 'active': false },
{ 'user': 'fred', 'age': 50, 'active': false },
{ 'user': 'fred', 'age': 60, 'active': false },
{ 'user': 'fred', 'age': 70, 'active': false },
{ 'user': 'fred', 'age': 22, 'active': false },
{ 'user': 'fred', 'age': 25, 'active': false },
{ 'user': 'barney', 'age': 40, 'active': false }, …Run Code Online (Sandbox Code Playgroud) 在RP尼迈耶的文章Knockout.js性能缺陷#3 -所有绑定火一起,一种方法来建立一个下拉列表提供:
<select data-bind="value: selectedOption">
<!-- ko foreach: options -->
<option data-bind="attr: { value: id }, text: name"></option>
<!-- /ko -->
</select>
Run Code Online (Sandbox Code Playgroud)
这段代码也在文章的jsfiddle中.
http://jsfiddle.net/rniemeyer/QjVNX/
但是,当我使用这种在项目中构建选择的方法时,它工作正常,直到我在Internet Explorer 8中测试.IE8失败并且"无法解析绑定".
实际上,从IE8中的文章中运行小提琴也会导致错误.有没有办法使用knockout的foreach在IE8(我假设IE8或更少)中构建选择?
我有一个从javascript数组填充的dataTables v1.9.4,我有复选框列,如果它是:checked整个行应该每5秒更新一次,问题是我有一个大的fnRowCallback函数,在行更新后没有执行所以我的所有行结构崩溃.这是我的更新代码:
function updateRow(){
newRowData = $.data(document.body, 'updatedData');
var newRow = [];
newRow.push(1, 1);
for (var title in newRowData[0]){
newRow.push(newRowData[0][title]);
}
oTable.fnUpdate( newRow, updateIndex, false, true);
};
Run Code Online (Sandbox Code Playgroud)
这个我的fnRowCallback:
"fnRowCallback": function( nRow, aData, iDisplayIndex ) {
//make 3state button and indicator for relay mask & status
$('td.relay', nRow).each(function(){
relayStatus = $(this).text();
$(this).html('<div class="hidden-value">' + relayStatus + '</div><div></div>');
if(relayStatus == 1){
$(this).children('div:last').addClass('relmas1');
}
if(relayStatus == 0){
$(this).children('div:last').addClass('relmas0');
}
if(relayStatus == -1){
$(this).children('div:last').addClass('relmas-1');
}
});
//makes update …Run Code Online (Sandbox Code Playgroud) 我有一个简单的问题例子.我正在使用Datatables 1.9.当数据表位于另一个html表中时,列标题在水平滚动时不会移动.当它不在html表中时,它工作正常.我的例子实际上取自他们在水平滚动的例子,但我添加了外表.任何帮助,将不胜感激.我到处寻找答案.这是代码.谢谢
<head>
<script type="text/javascript" src="<%=request.getContextPath()%>/scripts/jquery.min.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/scripts/jquery-ui.min.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/scripts/jquery.dataTables.min.js"></script>
</head>
<form>
<table>
<tr>
<td>
<div id="demo">
<table id="example">
<thead>
<tr>
<th>Rendering engine</th>
<th>Browser</th>
<th>Platform(s)</th>
<th>Engine version</th>
<th>CSS grade</th>
</tr>
</thead>
<tfoot>
<tr>
<th>Rendering engine</th>
<th>Browser</th>
<th>Platform(s)</th>
<th>Engine version</th>
<th>CSS grade</th>
</tr>
</tfoot>
<tbody>
<tr>
<td>Trident</td>
<td>Internet Explorer 4.0</td>
<td>Win 95+</td>
<td>4</td>
<td>X</td>
</tr>
<tr>
<td>Other browsers</td>
<td>All others</td>
<td>-</td>
<td>-</td>
<td>U</td>
</tr>
</tbody>
</table>
</div>
</td>
</tr>
</table>
</form>
<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
$(document).ready(function() {
$('#example').dataTable( {
"sScrollX": …Run Code Online (Sandbox Code Playgroud) 是否有可能纳入的创建,更新数据验证规则和删除操作使用Knex.js查询生成器库时,即使Knex不这样做开箱?
如果是,那么:
甚至 Bookshelf 也没有配备验证引擎。
javascript ×5
jquery ×5
arrays ×2
datatables ×2
ajax ×1
knex.js ×1
knockout.js ×1
lodash ×1
sql ×1
t-sql ×1
validation ×1