在Web部件中显示动态表的最佳方法是什么,其中每个单元格都可以导致回发显示不同的数据集?
例如,想象一些财务数据:
Table 1: Quarters in year | Q1 | Q2 | Q3 | Q4 | Things 1 | 23 | 34 | 44 | 32 | Things 2 | 24 | 76 | 67 | 98 |
点击Q2,第1项(34)的值,这将导致显示第二个表而不是表1:
Table 2: Weeks in Quarter | W1 | W2 | W3 | W4 | W5 | W6 | W7 | SubThings 1 | 231 | 22 | 44 | 22 | 344 | 86 | 12 | SubThings 2 | 14 | 75 | 47 | 108 | 344 | 86 | 12 |
我现在采取的方法的问题是我可以在CreateChildControls中创建表1,这导致所有事件都被连接到单元格中的所有链接按钮。
但是,因为在回发时,我需要再次在CreateChildControls中创建表1,以便正确连接事件处理程序,并且当事件在 CreateChildControls之后触发时,我只知道我需要在 CreateChildControls之后更改表。
因此,无论我在哪里创建表2作为resault(因为它在CreateChildControls之后),我都无法正确地连接事件。
有什么想法吗?
此致 も
编辑:解决了它。
您需要做的是检查OnPreRender的所有事件处理程序调用,设置您需要的任何标志,然后手动调用this.CreateChildControls,以便创建新表并正确连接所有内容。
答案 0 :(得分:0)
看起来你在这里谈论主/细节情况。您是否可以创建两个Web部件并使用Web部件连接将表1中的所需信息(第一个Web部件)传递到第二个Web部件中的表2?
Ĵ
答案 1 :(得分:0)
只需在Web部件中添加2个表,隐藏第二个表,直到第一个表单击一个元素,然后在OnClick事件处理程序中设置第二个表的数据源,将第二个网格设置为可见,第一个网格设置为隐藏... < / p>
答案 2 :(得分:0)
根据Alex的建议,答案是:
事件需要在被调用之前被绑定,因此你需要在CreateChildControls中创建相同的控件,允许调用事件然后重置所有内容。
要做到这一点,首先要将CreateChildControls与之前的页面完全相同,然后检查OnPreRender是否已进行任何eventhandler调用,设置所需的任何标志,然后使用新的设置信息手动调用this.CreateChildControls以便新表已创建并且所有内容都已正确连接。