我試圖讓動態生成的文件上傳的值控制,我添加到面板:一個循環中迭代動態FileUpload控件集合面板控制使用ASP.NET C#
<asp:Panel ID="pFileControls" runat="server">
</asp:Panel>
我創建控件通過一個記錄集:
foreach(DataRow dr in ds.Tables[0].Rows)
{
FileUpload fu = new FileUpload();
fu.ID = dr["SomeID"].ToString();
pFileControls.Controls.Add(fu);
}
一切正常起來的地方,我提交表單與此按鈕點:
<asp:Button ID="btnImportFile" runat="server" Text="Save" OnClick="btnImportFile_Click" />
其中我這樣註冊(的Page_Load):
ScriptManager.GetCurrent(this).RegisterPostBackControl(btnImportFile);
我這樣做是因爲我用我的網站母版/ ContentPage設置,大多是一切發生的UpdatePanel內的AJAXification目的。請記住,如果我在HTML視圖中指定FileUpload控件,它將100%工作。
當表單提交我嘗試迭代面板是這樣的:
foreach (Control ctrl in pFileControls.Controls)
{
if (ctrl.GetType() != typeof(FileUpload))
{
continue;
}
//Do the saving of the file here
}
除此之外,小組似乎只返回一個控制:內容預留位置的頁面,沒有別的。有沒有人有關於此的一些想法?
非常感謝,你給我的第二個鏈接清除了它,我只需要在Page_Load中加載控件! – 2010-10-15 14:21:46
好吧,也許我有點太倉促了。在Page_Load中每次都重新創建控件,它們提交時包含的任何值都會丟失。任何創意? – 2010-10-15 14:30:42
@mr。Smith,您需要在每個頁面加載時創建控件,將這部分放入page_init中,它們將被重新創建在每個負載上,但是當視圖狀態被加載時,你的值將被重新輸入(通過視圖狀態)by page_load視圖狀態已經被加載 – Harrison 2010-10-15 14:36:01