2009-08-25 105 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

相關問題