我正在使用中繼器創建動態的數據庫驅動表單。在中繼器的其他行中查找動態控件
所需功能的一部分是能夠具有動態驅動的下拉列表,這些下拉列表取決於先前選擇的下拉列表中的值以生成其值。
所以,如果我創建一個下拉列表控件,並將其添加到一行併爲其分配一個id,並且我轉到下一行,如何從上一行中的控件獲取值?
這就是我想要的,但.FindControl每次都返回null。
DropDownList toParentDDL = (DropDownList)rptDynamicForm.FindControl("ParentControlID");
ID的設置正確,並且放置在查找控制方法中的ID也是適當的。
只是另一個想法...當我添加控件到中繼器,我這樣做是這樣的:
e.Item.FindControl("pnlQuestionAnswer").Controls.Add(toDropDown);
那也許是因爲它被嵌套在面板內?
清除任何混淆。這些控件正在ItemDataBound上創建。
解決方案:
感謝蒂姆的幫助。我終於意識到問題所在。我正在尋找中繼器內的控制器,而中繼器本身不包含控制器,ITEMS包含我正在尋找的控制器,並且即使這些項目位於中繼器中,它也不會顯示在這些項目中。
要解決此問題,我只是做了(我在我的頭.findcontorl作品像.find jQuery中,它不會有它):
foreach (RepeaterItem toItem in rptDynamicForm.Items)
{
DropDownList toParentDDL = (DropDownList)toItem.FindControl("ParentControlID");
}
所以現在只要它不回null,它將包含正確的控件。
你能確保你的FindControl(「」)控制的名稱拼寫正確,C#的情況下重要的.. – MethodMan 2012-02-27 15:28:11
分配給id,並在查找控制中使用的值從數據庫中拉出...我在運行時驗證了這些值是相同的。 – Patrick 2012-02-27 15:30:30
您必須檢查您的查看源並識別ID – 2012-02-27 15:32:15