2009-09-10 42 views
0

我正在創建大量的動態控件,並且對於必須分配ID的所有內容,我使用保證的唯一變量對其進行分配(除非來自just controls的64位溢出)。如何找到我有一個重複的控制ID(C#)

現在,我有一個問題,雖然。我有一個複製控件某處,我無法發現它被添加的位置或任何東西,因爲直到Page_Load之後它纔會發生,這意味着當拋出異常時它不在我自己的代碼中(我認爲像Render一樣或其他一些內部功能)。

控件名稱是「ctlXXX」,其中XXX是一個數字(現在,始終爲244)此控件ID爲而不是由我製作。它由ASP.Net自動生成(因爲我的ID都沒有以ctl作爲前綴)。那麼,如何糾正我看不到的這個錯誤?任何人都可以提出找到我的錯誤的方法(我真的希望這不是ASP.Net中的錯誤)?

此外,最近我通過使用複製函數會在自定義控件上執行成員複製,然後它將重置任何控件以具有唯一ID或爲null,因爲此部分發生之前控件加載到自定義控件中,這是Panel的後代)

任何人都可以給我如何找到此錯誤的建議?

回答

1

我想你想看看INamingContainer接口。我認爲它會解決你的問題,但你將不得不派生一個新的控制課程來做到這一點。

+0

好的,這有助於一些。現在,我實際上得到了一個關於我自己的控件被重複的錯誤(這仍然不應該發生),所以我將不得不挖掘更多一點.. – Earlz 2009-09-10 18:09:54

+0

嗯..現在,我得到控件未找到..所以我將不得不弄清楚如何將我的代碼轉換爲使用此代碼,同時允許控件之間存在一些名稱... – Earlz 2009-09-10 18:13:17

+0

您需要更改對FindControl()的調用才能在INamingContainer的父實例上調用。換句話說,調用FindControl來查找容器,然後再次找到控件。 – 2009-09-11 16:26:06