Итерация динамической коллекции FileUpload Control в панели управления с использованием ASP.NET C # - PullRequest
3 голосов
/ 15 октября 2010

Я пытаюсь получить значения динамически генерируемых элементов управления FileUpload, которые я добавляю в Panel:

<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 на своем веб-сайте, и в основном все происходит внутри UpdatePanel для целей AJAXification.Имейте в виду, что если я явно указываю элемент управления FileUpload в представлении HTML, он работает на 100%.

Когда форма отправлена, я пытаюсь выполнить итерацию Panel следующим образом:

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

    //Do the saving of the file here
}

За исключением того, что Panel, похоже, возвращает только один элемент управления: заполнитель содержимого страницы и ничего больше.У кого-нибудь есть идеи по этому поводу?

1 Ответ

1 голос
/ 15 октября 2010

Какую часть жизненного цикла вы добавляете динамическим элементам управления?

если вы помещаете их в page_load, может быть слишком поздно, попробуйте поместить динамические элементы управления в page_init и посмотрите, решит ли это проблему.

жизненный цикл страницы http://msdn.microsoft.com/en-us/library/ms178472.aspx

динамическое управление http://geekswithblogs.net/shahed/archive/2008/06/26/123391.aspx Примечание:

"Рекомендуется загружать динамический контролирует во время Page_Init вместо этого, потому что мы можем захотеть подключить наш события с надлежащим обработчиком в начале этап. ... не присваивать свойства динамического управления (viewstate включено), во время Page_Init, это не будет отражено. «

Я ожидаю, что даже с панелью обновлений вам нужно помнить об ограничениях page_load с динамическими элементами управления.

Дайте мне знать, если это поможет или я пропустил отметку!

Давайте попробуем другой курс действий (я получил динамическую загрузку файлов на работу, но это была медвежья задача, и я хотел бы просто использовать это) http://www.asp.net/ajaxlibrary/act_AsyncFileUpload.ashx

или http://en.fileuploadajax.subgurim.net/

они могут не создавать «петлю» элементов, но вы можете просто продолжать загружать документы по мере необходимости.

Я специально использовал http://www.asp.net/ajaxlibrary/act_AsyncFileUpload.ashx с большим эффектом.

Похоже, что есть некоторые ограничения для обновления: панель и загрузка файла, проверьте эти сайты.

(этот говорит, что он не работает в состоянии частичного обновления, но работает в режиме полной обратной передачи) http://forums.asp.net/p/1105208/1689084.aspx

знаете ли вы, что отправка запускает полную страницу или только панель update:? (проверьте это: http://geekswithblogs.net/mmintoff/archive/2009/04/01/fileupload-within-updatepanel.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...