Z - {fields} 在 HTML 中用于 Codecharge 模板,因此 jsfiddle 中的 Jquery 不起作用(因为那里有东西) - 看起来每个模板字段后面都有一个空格,这也不是什么都没有(所以this.InnerHTML == ''
不会是真的)
我使用了 jsfiddle 并提出了一些可能有帮助的更改:
- Codecharge 在发布之前不会正确布局 HTML - 所以结束
</table>
标记实际上是中间表并且会混淆 jquery
- 分隔符和页脚行都使用'colspan = 55',当我删除它们(并将结束
</table>
标记移到末尾)时,它适用于测试列。
或者,在服务器端,您可以在每列周围添加 Codecharge 面板(这是 Grid Builder Wizard 中的一个选项,可以为您节省大量时间),您可以根据值单独将它们设置为“panelname6.Visible = false”。
使用 BeforeShowRow 标记每个列号,然后使用 Grid BeforeShow 事件中的自定义代码循环并隐藏面板。您还可以将要隐藏的列存储在隐藏字段中,并使用 jquery 使用与您正在使用的代码类似的代码来隐藏它们。
编辑网格选项 - 面板
Grid Builder 在流程后期有一些选项(我认为是第 7 步),允许您勾选“将面板添加到每列(用于隐藏/显示功能)”,这将在每列(和列标题)周围添加面板,以便您可以在后面的代码中打开和关闭它们。但是,由于它们应该被唯一命名,您也可以使用 jQuery 来关闭完整的列。
指定是否将所有控件放入以下类型的块中:
<!-- BEGIN ControlType ControlName --><!-- END ControlType ControlName -->
它将用于动态隐藏/显示页面上的控件。
来自“Grid Builder”的 Codecharge 手册。
在后面的代码中设置列标记以关闭面板需要更多的工作,但类似于(伪代码):
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中加入自己的totals,添加到BeforeShow的显示总数中。(请参阅“带有总计的简单报告”的 Codecharge 帮助)。