Update Panel içinde File Upload (Dosya Yükleyeme) Kullanımı
Bir sayfanız var ve içinde bir ya da daha fazla update panel kullanıyorsunuz. Ayrıca bu sayfa içinde bir de file upload kontrolüne ihtiyacınız var. Bu durumda henüz ilk denemenizde olası hatayla karşılaşacaksınız demektir. Yani file upload kontrolü bir dosya içermiyor olacak ve böylece yüklemeyi yapamayacaksınız.
Bu sorunla ilgili ufak bir araştırmayla beraber çok fazla kaynağa ulaşabilirsiniz. Ve çoğunun söylediği, bu sorunun çözümünün ufak bir eklenti olduğudur. Aşağıda olduğu gibi, update panelin triggerlarına PostBackTrigger olarak upload için kullanılacak butonu göstermeniz yeterli olacaktır:
<asp:UpdatePanel ID="upnl" runat="server">
<ContentTemplate>
<asp:FileUpload ID="fup" runat="server" />
<asp:Button ID="btnUpload" runat="server" Text="Yükle" />
ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnUpload" />
Triggers>
asp:UpdatePanel>
Bu şekilde kullanacağınız file upload gayet düzgün çalışacak ve sorununuz çözülmüş olacaktır. Peki ya bu update panel içerisinde postback yapacak başka bir kontrolümüz olursa?
<asp:UpdatePanel ID="upnl" runat="server">
<ContentTemplate>
<asp:DropDownList ID="ddl" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddl_SelectedIndexChanged">asp:DropDownList>
<asp:FileUpload ID="fup" runat="server" />
<asp:Button ID="btnUpload" runat="server" Text="Yükle" />
ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnUpload" />
Triggers>
asp:UpdatePanel>
Bu durumda trigger çözümü işe yaramayacak ve başa dönmüş olacaksınız. Bunu aşabilmek için ilk akla gelen yol postback yapacak kontrol ile file upload kontrolünü farklı update paneller içine almaktır. Peki, bu sefer de tasarımınız buna izin vermezse ne yapacaksınız? Bir popup kontrolü kullanarak sorunuzu çözebilir ve tasarım kısıtlamasına takılmış olmazsınız. Ayrıca bir ajax popup ile sayfa tasarımınızı bozmayacak hatta daha kullanışlı ve şık bir yönteme ulaşabilirsiniz.