当我的数据库什么都没有返回时,我试图隐藏整个列,但它仍然将数据库字段(例如{something})视为有效输入。
$('#mytable th').each(function(i) {
var remove = 0;
var tds = $(this).parents('table').find('tr td:nth-child(' + (i + 1) + ')')
tds.each(function(j) {
if (this.innerHTML == '') remove++;
});
if (remove == ($('#mytable tr').length - 1)) {
$(this).hide();
tds.hide();
}
});
https://jsfiddle.net/wwmyxp9o/9/
这就是它现在的前景:
我已根据Stephen Walcher的代码尝试了此代码 remove/hide table's empty column(s), including <th> ,但仍然没有运气。
我刚刚开始做这样的规模,我很感激这个问题的任何帮助。
谢谢,
ž
答案 0 :(得分:0)
Z - {fields}在用于Codecharge模板的HTML中,因此jsfiddle中的Jquery不起作用(因为那里有东西) - 看起来每个模板字段后面都有一个空格,这也不是什么(所以this.InnerHTML == ''
不会是真的)
我和jsfiddle一起玩,并提出了一些可能会有所帮助的变化:
</table>
标记实际上是中间表格并且会混淆jquery </table>
标记移到末尾)时,它适用于测试列。或者,在服务器端,您可以在每个列周围添加Codecharge面板(它是Grid Builder向导中的一个选项,可以为您节省大量时间)并且您可以将它们变为&#39; panelname6.Visible = false&#39;单独取决于价值观。
使用BeforeShowRow标记每个列号,然后使用Grid BeforeShow事件中的自定义代码循环并隐藏面板。您还可以存储列以隐藏在隐藏字段中,并使用jquery使用类似的代码隐藏它们。
编辑网格选项 - 面板
Grid Builder在此过程的后期有一些选项(我认为步骤7),它允许您勾选“为每个列添加面板”(用于隐藏/显示功能)&#39;这将在每列(和列标题)周围添加面板,以便您可以在后面的代码中打开和关闭它们。但是,因为它们应该是唯一命名的,所以你也可以使用jQuery来关闭完整的列。
指定是否所有控件都采用以下类型的块:
<!-- BEGIN ControlType ControlName --><!-- END ControlType ControlName -->
它将用于动态隐藏/显示页面上的控件。
来自Codecharge Manual&#34; Grid Builder&#34;。
在后面的代码中设置列标记以关闭面板,但某些(伪代码)更多的工作:
BeforeShowRow
$flagCol1Hide = ($flagCol1Hide OR $Container->col1Value->GetValue() > 0);
$flagCol2Hide = ($flagCol2Hide OR $Container->col2Value->GetValue() > 0);
//etc
end
BeforeShow
// For the Grid (aka $Component in this case), with Panels as children
$Component->PanelCol1->Visible = !$flagCol1Hide;
$Container->PanelCol2->Visible = !$flagCol2Hide;
end
至于Totals,如果你不能得到它们,你也可以在BeforeShowRow中包含你自己的总和,并将它们添加到BeforeShow中的显示总数。 (请参阅“使用Total&#39;简单报告的Codecharge帮助”。)