Как новый .net/C# web begginner, я всегда сработал, когда пытаюсь использовать FindControl. Blam -flat на моем лице. Вот моя текущая проблема FindControl:FindControl в режиме редактирования DataList
У меня есть страница .aspx и форму, а затем Ajax UpdatePanel, внутри него есть мой DataList (DataList1), который имеет EditItemTemplate: что имеет следующее:
<EditItemTemplate>
<asp:Label ID="thumbnailUploadLabel" runat="server" text="Upload a new thumbnail image:"/><br />
<asp:FileUpload ID="thumbnailImageUpload" runat="server" />
<asp:Button ID="thunbnailImageUploadButton" runat="server" Text="Upload Now" OnClick="thumbnailUpload"/><br />
</EditItemTemplate>
в моем C# код позади меня есть код OnClick для объекта FileUpload:
protected void thumbnailUpload(object s, EventArgs e)
{
if (thumbnailImageUpload.HasFile)
{
//get name of the file & upload
string imageName = thumbnailImageUpload.FileName;
thumbnailImageUpload.SaveAs(MapPath("../../images/merch_sm/" + imageName));
//let'em know that it worked (or didn't)
thumbnailUploadLabel.Text = "Image " + imageName + "has been uploaded.";
}
else
{
thumbnailUploadLabel.Text = "Please choose a thumbnail image to upload.";
}
Так, конечно, я получаю «ссылка на объект не указывает на экземпляр объекта» для FileUpload и Label.
Каков правильный синтаксис для поиска этих элементов управления, прежде чем обращаться с ними в событии OnClick?
Единственный способ Ive использовали FindControl что-то вроде:
этикетки thumbnailUploadLabel = DataList1.FindControl ("thumbnailUploadLabel") в качестве этикетки;
Но, конечно, это вызывает ошибку «Ссылка на объект, не установленную на экземпляр объекта». Любая помощь очень ценится.
(Я также видел «рекурсивный» код, который должен облегчить использование FindControl. Ха! Я настолько зеленый на C#, что даже не знаю, как включить их в свой проект.)
Спасибо всем, что посмотрели на это.
Привет, Панкай, спасибо за ответ. Позднее лучше никогда. В итоге я использовал код, похожий на то, что вы разместили выше. Да, я обнаружил FileUpload внутри проблемы UpdatePanel, поэтому исправил, что, как только я распознал, они не играют хорошо вместе. Кроме того, я обнаружил NeatUpload от Dean Brettle (www.brettle.com) в качестве очень элегантного объекта загрузки нескольких файлов - если возникнет необходимость ... – Doug