PDA

View Full Version : سوال: استفاده uploadfile در update panel ajax



silver_Rain
سه شنبه 17 فروردین 1389, 07:36 صبح
:متفکر:سلام خدمت دوستان

چطور میشه از upload file در update panel ajax استفاده کرد؟
زمانی که من استفاده میکنم هیچ فایلی را نمیشناسه.و خصوصیت hasfile برابر با notihng هستش.

tanx

mehdi.mousavi
سه شنبه 17 فروردین 1389, 09:55 صبح
:متفکر:سلام خدمت دوستان

چطور میشه از upload file در update panel ajax استفاده کرد؟
زمانی که من استفاده میکنم هیچ فایلی را نمیشناسه.و خصوصیت hasfile برابر با notihng هستش.

tanx

سلام.
UpdatePanel با چند تا از کنترلها سازگار نیست، که یکی از این کنترلها، FileUpload هستش. شما باید از Option های دیگه استفاده کنید. لطفا به Google مراجعه کنید.

موفق باشید.

mohammad.sakhidel
سه شنبه 17 فروردین 1389, 11:32 صبح
از کنترل AsyncFileUpload که از کنترل های AjaxControlToolkit هست استفاده کن.




-----------------------------------------------------------------
بازار مرزی ایرانیان :: تجربه یک خرید ارزان و با کیفیت (http://www.bazaremarzi.com)

silver_Rain
سه شنبه 17 فروردین 1389, 14:04 عصر
از کنترل AsyncFileUpload که از کنترل های AjaxControlToolkit هست استفاده کن.
لطف میکنید یک مثال کوچیک بزنید.همچین کنترلی در ajax من ندیدم.

mer30

mohammad.sakhidel
سه شنبه 17 فروردین 1389, 18:41 عصر
تصویر ضمیمه رو ببین.




-----------------------------------------------------------------
بازار مرزی ایرانیان :: تجربه یک خرید ارزان و با کیفیت (http://www.bazaremarzi.com)

alireza_s_84
سه شنبه 17 فروردین 1389, 20:02 عصر
سلام.
UpdatePanel با چند تا از کنترلها سازگار نیست، که یکی از این کنترلها، FileUpload هستش. شما باید از Option های دیگه استفاده کنید. لطفا به Google مراجعه کنید.

موفق باشید.
جناب موسوی با احترام میشه اینو امتحان کنید:


<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

<asp:UpdatePanel ID="UpdatePanel1" runat="server">

<ContentTemplate>

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

<br />

<asp:Button ID="Button1" runat="server" Height="20px" onclick="Button1_Click" Text="Submit" Width="128px" />

<br />

<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

<br />

<asp:FileUpload ID="FileUpload1" runat="server" />

<br />

<asp:Button ID="Button2" runat="server" Height="25px" onclick="Button2_Click" Text="Upload" Width="128px" />

<br />

<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>

<br />

</ContentTemplate>

<Triggers>

<asp:PostBackTrigger ControlID="Button2" />

</Triggers>

</asp:UpdatePanel>

protected void Button1_Click(object sender, EventArgs e)

{

Label1.Text = TextBox1.Text;

}

protected void Button2_Click(object sender, EventArgs e)

{

FileUpload1.PostedFile.SaveAs(@"C:\test\"+System.IO.Path.GetFileName(FileUpload1.PostedFile .FileName));

Label2.Text = FileUpload1.PostedFile.FileName;

}

mehdi.mousavi
سه شنبه 17 فروردین 1389, 20:25 عصر
جناب موسوی با احترام میشه اینو امتحان کنید:

سلام.
اشتباه نکنید! شما از PostBackTrigger استفاده کرده اید، در نتیجه، Full Postback رخ میده... به بیان دیگه، شما با این کار، فلسفه وجودی UpdatePanel رو از بین برده اید. چرا که اگر از UpdatePanel هم استفاده نکنید، Full Postback رخ خواهد داد...

موفق باشید.

alireza_s_84
سه شنبه 17 فروردین 1389, 21:02 عصر
سلام.
اشتباه نکنید! شما از PostBackTrigger استفاده کرده اید، در نتیجه، Full Postback رخ میده... به بیان دیگه، شما با این کار، فلسفه وجودی UpdatePanel رو از بین برده اید. چرا که اگر از UpdatePanel هم استفاده نکنید، Full Postback رخ خواهد داد...

موفق باشید.

خوب برای سوال ایشون جواب همینه بله کاملا حق با شماست FullPostBack صورت میگیره اما برای فلسفه وجودی UpdatePanel چرا بره زیر سوال؟
قرار نیست که هر ارسال PstBack کاملی فلسفه وجودی UpdatePanel و یا حتی Ajax رو ببره زیر سوال.
ضمنا تا اونجایی که من اطلاع دارم (اصرار ندارم) قبلا یک مقاله ای خونده بودم که برای آپلود فایل نیاز به FullPostBack داریم چه ایجکس چه عادی .
بهر حال در این قسمت بنده با شما هم نظر هستم
موفق باشید

silver_Rain
چهارشنبه 18 فروردین 1389, 08:45 صبح
سلام مجدد.

در مورد AsyncFileUpload که باید بگم وجود خارجی در 2005 نداره.
اما در کل متشکرم بابت راهنمایتون.استفاده کردم.

mehdi.mousavi
چهارشنبه 18 فروردین 1389, 10:13 صبح
خوب برای سوال ایشون جواب همینه بله کاملا حق با شماست FullPostBack صورت میگیره اما برای فلسفه وجودی UpdatePanel چرا بره زیر سوال؟ قرار نیست که هر ارسال PstBack کاملی فلسفه وجودی UpdatePanel و یا حتی Ajax رو ببره زیر سوال. ضمنا تا اونجایی که من اطلاع دارم (اصرار ندارم) قبلا یک مقاله ای خونده بودم که برای آپلود فایل نیاز به FullPostBack داریم چه ایجکس چه عادی. بهر حال در این قسمت بنده با شما هم نظر هستم موفق باشید

سلام.
دلیل شما برای استفاده از UpdatePanel چیه؟ Partial Refreshing. درسته؟ خوب، وقتی Full Postback رخ میده، کل صفحه Refresh میشه. دیگه چه اهمیتی داره که از UpdatePanel استفاده کنیم یا نه؟ به این دلیل هستش که میگم فلسفه استفاده از UpdatePanel رو زیر سوال میبره.

من (نوعی) که زمان میذارم یک سناریوی خوب رو برای Ajax Rich App خودم در بیارم، مطمئنا حاضر نیستم باعث بشم که کاربرم تجربه کارکردن با یک صفحه "خوب طراحی شده" رو از دست بده. تفاوتها در جزییات نهفته شدن...

موفق باشید.

alireza_s_84
چهارشنبه 18 فروردین 1389, 10:35 صبح
سلام.
دلیل شما برای استفاده از UpdatePanel چیه؟ Partial Refreshing. درسته؟ خوب، وقتی Full Postback رخ میده، کل صفحه Refresh میشه. دیگه چه اهمیتی داره که از UpdatePanel استفاده کنیم یا نه؟ به این دلیل هستش که میگم فلسفه استفاده از UpdatePanel رو زیر سوال میبره.

من (نوعی) که زمان میذارم یک سناریوی خوب رو برای Ajax Rich App خودم در بیارم، مطمئنا حاضر نیستم باعث بشم که کاربرم تجربه کارکردن با یک صفحه "خوب طراحی شده" رو از دست بده. تفاوتها در جزییات نهفته شدن...

موفق باشید.

ولی صفحه Refresh نمیشه و ضمنا فقط محتویات درون UpdatePanel بروز میشن درست تمامی عناصر و المانها سمت سرور فرستاده میشن ولی در هنگام بروز رسانی فقط محتویات UpdatePanel بروز میشه. برای همین من گفتم فلسفه وجودی UpdatePanel نمیره زیر سوال در غیر اینصورت من با شما موافقم

mehdi.mousavi
چهارشنبه 18 فروردین 1389, 11:52 صبح
ولی صفحه Refresh نمیشه و ضمنا فقط محتویات درون UpdatePanel بروز میشن درست تمامی عناصر و المانها سمت سرور فرستاده میشن ولی در هنگام بروز رسانی فقط محتویات UpdatePanel بروز میشه. برای همین من گفتم فلسفه وجودی UpdatePanel نمیره زیر سوال در غیر اینصورت من با شما موافقم

آخه این چه حرفیه میزنید؟ ما یه Full Postback داریم، یه Asynchronous Postback داریم. دومی اونی هستش که شما میگید. اما اولی، باعث میشه کل صفحه Refresh بشه و به UpdatePanel دیگه کاری نداره. برای اطمینان از این مساله، یک فایل ASPX ایجاد کنید و اینو توش کپی کنید:


<%@ Page Language="C#‎" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div>
<asp:Label ID="lblOuter" runat="server" Text="initial value"></asp:Label>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="btnFullPostback" runat="server" Text="Full postback" OnClick="btnFullPostback_Click" />
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnFullPostback" />
</Triggers>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>


سپس، توی Code Behind، این تابع رو اضافه کنید:

protected void btnFullPostback_Click(object sender, EventArgs e)
{
this.lblOuter.Text = "Fullpostback";
}


اگر حرف شما صحت داشته باشه، Label بیرون از UpdatePanel ای گذاشتم و اسمشو lblOuter انتخاب کردم، نباید پس از زدن Button، تغییر کنه. در صورتیکه متنش تغییر میکنه و میشه Fullpostback. یعنی، کل صفحه Refresh شده، حتی محتویات خارج از UpdatePanel. احتمالا شما توی Firefox یا مرورگری غیر IE اینو مشاهده کردین. اونیکی مرورگرها، کلا صفحه رو هنگام Full Postback هم خیلی خوب Refresh میکنن تا کاربر کمترین احساس پرش رو داشته باشه. اما IE، اینقدر اینکارو بد انجام میده که کاملا متوجه موضوع میشید.

موفق باشید.

پاورقی: حالا قبول می کنید این کار صحیح نیست، یا بازم رو حرف خودتون پافشاری می کنید؟ :)

alireza_s_84
چهارشنبه 18 فروردین 1389, 12:24 عصر
پاورقی: حالا قبول می کنید این کار صحیح نیست، یا بازم رو حرف خودتون پافشاری می کنید؟ :)
دوست عزیز من پافشاری نمیکنم.
بله حق با شماست :تشویق:
اما بعد از آپلود کامل فایل صفحه رفرش میشه لذا میشه اجتناب کرد.
راه دیگه ای هم وجود داره و اون استفاده از Iframe پنهانه. چنانچه خود UpdatePanel برای بروز رسانی پاسخ دریافتی از سرور نتیجه رو در یک Iframe پنهان میریزه.
در کل من با شما در پست بک شدن موافقم.

yazd_alireza
دوشنبه 03 خرداد 1389, 11:47 صبح
alireza_s_84 امکان داره سورسش را قرار بدی؟