У меня есть повторитель, который среди других элементов управления имеет AsyncFileUpload и метку ошибки, встроенную в панель (обычная, а не панель обновления). В событии UploadComplete AFU мне нужно получить доступ к панели и метке; Я могу получить доступ к самому AFU, используя аргумент «отправитель»:
<asp:Repeater runat="server" ID="rpt1" ClientIDMode="Static" OnItemDataBound="rptQuestions_ItemDataBound">
<ItemTemplate>
< other controls>
<asp:Panel runat="server" ID="pnlFU" clientidmode="static">
<ajaxToolkit:AsyncFileUpload runat="server"
ID="fuAttchedDocs"
clientidmode="static"
ThrobberID="myThrobber"
UploaderStyle="Traditional"
OnClientUploadComplete="onClientUploadComplete"
OnUploadedComplete="fuAttchedDocs_UploadedComplete"
OnUploadedFileError="fuAttchedDocs_UploadedFileError" />
<asp:Label runat="server" ID="lblError" clientidmode="static" Text="" CssClass="field-validation-error" Style="display: none" />
</asp:Panel>
</ItemTemplate>
</asp:Repeater>
protected void fuAttchedDocs_UploadedComplete(object sender, AsyncFileUploadEventArgs e)
{
AsyncFileUpload fuAttchedDocs = (AsyncFileUpload)sender;
if (fuAttchedDocs.HasFile)
{
// How do I access these?
lblError.Style["display"] = "none";
....
pnlFU.Style["display"] = "block";
}
}
Как убедиться, что я получаю доступ к нужной панели и этикетке внутри ретранслятора?
Кроме того, когда нажимается кнопка «Отправить», расположенная за пределами ретранслятора, я использую следующее, чтобы убедиться, что все файлы загружены одновременно, и вызываю js-функцию sendResponse (), которая выполняет обратную передачу для обработки всех элементов ретранслятора.
<button type="submit" class="btn btn-primary btn-md" onclick="javascript:document.forms[0].encoding = 'multipart/form-data';sendResponse();">Submit Response</button>
Это кажется правильным? Я не могу проверить это, пока не выясню, как получить доступ к элементам управления внутри ретранслятора, но подумал, что уточню у вас, имеет ли это смысл или нет.