Web部件,动态创建的控件和事件处理程序

时间:2009-08-25 20:02:30

标签: sharepoint event-handling web-parts

在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,以便创建新表并正确连接所有内容。

3 个答案:

答案 0 :(得分:0)

看起来你在这里谈论主/细节情况。您是否可以创建两个Web部件并使用Web部件连接将表1中的所需信息(第一个Web部件)传递到第二个Web部件中的表2?

Ĵ

答案 1 :(得分:0)

只需在Web部件中添加2个表,隐藏第二个表,直到第一个表单击一个元素,然后在OnClick事件处理程序中设置第二个表的数据源,将第二个网格设置为可见,第一个网格设置为隐藏... < / p>

答案 2 :(得分:0)

根据Alex的建议,答案是:

事件需要在被调用之前被绑定,因此你需要在CreateChildControls中创建相同的控件,允许调用事件然后重置所有内容。

要做到这一点,首先要将CreateChildControls与之前的页面完全相同,然后检查OnPreRender是否已进行任何eventhandler调用,设置所需的任何标志,然后使用新的设置信息手动调用this.CreateChildControls以便新表已创建并且所有内容都已正确连接。