gpt4 book ai didi

c# - 使用 ASP.NET C# 在面板控件中迭代动态 FileUpload 控件集合

转载 作者:行者123 更新时间:2023-11-30 18:07:29 26 4
gpt4 key购买 nike

我正在尝试获取我添加到面板的动态生成的 FileUpload 控件的值:

<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);

我这样做是因为我在我的网站中使用了 MasterPage/ContentPage 设置,并且为了 AJAX 化目的,大多数情况下一切都发生在 UpdatePanel 内。请记住,如果我在 HTML View 中明确指定一个 FileUpload 控件,它 100% 有效。

提交表单后,我尝试像这样迭代面板:

foreach (Control ctrl in pFileControls.Controls)
{
if (ctrl.GetType() != typeof(FileUpload))
{
continue;
}

//Do the saving of the file here
}

除此之外,面板似乎只返回一个控件:页面的内容占位符,除此之外别无其他。有没有人对此有一些想法?

最佳答案

您要在生命周期的哪一部分添加动态控件?

如果您将它们放在 page_load 中,则可能为时已晚,请尝试将动态控件的生成放入 page_init 中,看看是否能解决问题。

页面生命周期 http://msdn.microsoft.com/en-us/library/ms178472.aspx

动态控制 http://geekswithblogs.net/shahed/archive/2008/06/26/123391.aspx注意:

"Its recommended to load the dynamic controls during the Page_Init instead, because we may want to hook up our events with proper handler at an early stage. ... Do not assigning properties of a dynamic control (viewstate enabled), during Page_Init, it will not be reflected. "

我希望即使使用更新面板,您也需要注意动态控件的 page_load 限制。

让我知道这是否有帮助,或者我是否错过了标记!

让我们尝试一个不同的操作过程(我已经让动态文件上传工作了,但它是一个熊,我希望我只是简单地使用它) http://www.asp.net/ajaxlibrary/act_AsyncFileUpload.ashx

或者 http://en.fileuploadajax.subgurim.net/

这些可能不会创建元素的“循环”,但您可以根据需要简单地继续加载文档。

我专门用过 http://www.asp.net/ajaxlibrary/act_AsyncFileUpload.ashx效果很好。

update:panel 和文件上传似乎也有一些限制,请查看这些站点。

(这个说它在部分更新状态下不起作用,但在完整回发中起作用) http://forums.asp.net/p/1105208/1689084.aspx

你知道提交是触发整个页面还是只触发更新:面板? (看看这个:http://geekswithblogs.net/mmintoff/archive/2009/04/01/fileupload-within-updatepanel.aspx

关于c# - 使用 ASP.NET C# 在面板控件中迭代动态 FileUpload 控件集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3942877/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com