我试图让动态生成的文件上传的值控制,我添加到面板:一个循环中迭代动态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