2009-07-25 94 views
0

我想使用FindControl()來設置頁面上的一些DropDownLists的值。FindControl()返回複製?

出於某種原因,似乎FindControl()正在返回控件對象的副本而不是引用,我的印象是,由於缺少控件的複製構造函數?

<編輯>

好吧,這apparears,這其實也不是返回一個副本,它根本就沒有讓我設置控件的公開程度,其他屬性我設置做工精細。

有沒有人有任何見識,爲什麼這可能是這種情況? 我試着在快速模式下設置它,然後立即查看數值,但實際上並沒有改變數值!

</EDIT >

<編輯>(二)

好吧,我在Page_Load中這樣做,這不是在GridView(我喜歡你們是如何假定一個CUS我使用FindControl())。

我這樣做是因爲有一組操作我必須在動態數目的類似命名的列表上執行,並且在循環中執行它比在硬編碼時要好得多。

</EDIT >

誰能幫助?

乾杯,埃德

+0

它不復制控件。必須有其他的錯誤。 – 2009-07-25 11:29:17

+0

這正是我以爲 - >做了更多的測試 - >更新問題。 – 2009-07-25 11:30:54

+0

PS:如果您隱藏面板,則無需將其中的控件設置爲隱藏。 – Thorarin 2009-07-25 12:09:05

回答

3

編輯:
哇,等一下...你設置Visible屬性true,而不是假的? 在你的評論中,你提到它立即改變。 Visible屬性將評估爲false,如果它的父項設置爲不可見,則無論您多久告訴它該值應爲true

1

你在哪裏打電話FindControl()並設置Visible財產?

有關信息,FindControl()基於字符串id獲取對當前命名容器中控件的引用,並且不復制控件。爲了與控制工作,你應該把它轉換爲您所期望的控件的類型 -

DropDownList ddl = (DropDownList)e.Row.FindControl("myDropDownList"); 

這個例子將允許你在一個GridView的OnRowDataBound事件DropDownList控件工作。