2009-08-25 71 views
0

什么是在Web部件中显示动态表的最佳方式,其中每个单元格可以导致回发显示不同的一组数据?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的任何eventhandler调用,设置你需要的任何标志,然后调用this.CreateChildControls手动创建新表,并且一切都正确连线。

+0

@Moo将您的解决方案作为问题的答案并在几天后回来标记为已回答将是一个好主意。否则,它永远在问题列表中似乎没有答案。 – 2009-08-26 05:13:36

回答

0

在Alex的建议,这里是答案:

事件之前需要将它们捆绑起来被称为,所以你需要创建的CreateChildControls相同的控制,让事件被调用,然后重新设置所有内容。

要做到这一点,首先要做的CreateChildControls与先前的页面相同,然后检查OnPreRender是否有任何事件处理程序调用,设置任何标志,你需要,然后调用this.CreateChildControls手动与新的设置信息,所以新表格被创建并且一切都正确连接。

0

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

Ĵ

+0

这解决了两个表,但不是超过两个,我最终可以做。 – Moo 2009-08-25 22:04:30

0

只需添加2个表到你的网络的一部分,隐藏第二,直到第一个有一个点击的元素,然后将第二个表的数据源在onclick事件处理程序,第二个格设置为可见和第一隐藏...

+0

问题在于它解决了两个表的问题,但是解决了三个表或n个表的问题。 我自己解决了这个问题,对于n个表格。 – Moo 2009-08-25 22:02:03

+0

这个问题并不清楚,你需要持续钻取。我的解决方案是创建我自己的模板控件... – Colin 2009-08-26 08:05:32

相关问题