PDA

View Full Version : update progress در تمام صفحه



miladr
شنبه 29 دی 1386, 23:35 عصر
چطوری میشه یک update progress ساخت که وقتی داره عمل می کنه کل صفحه رو بگیره

mahdi_farhani
یک شنبه 30 دی 1386, 00:00 صبح
منظورت اینه که دیگه کسی نتونه کار دیگه ای بکنه . از این کد میتونی استفاده کنی
هم قشنگه هم رو FF هم جواب میده
اول اسکریپت منیجر

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

<script type="text/javascript" language="javascript">
Sys.WebForms.PageRequestManager.getInstance().add_ beginRequest(BeginRequestHandler);
Sys.WebForms.PageRequestManager.getInstance().add_ endRequest(EndRequestHandler);

</script>

اینم توابع رو هم اضافه کنید


// JScript File
function BeginRequestHandler(sender, args)
{
var elem = args.get_postBackElement();
ActivateAlertDiv();

}
function EndRequestHandler(sender, args)
{
var adiv = $get("divMain");
var lDiv = $get("Loading");
lDiv.style.display="none";
adiv.style.height="100%";
adiv.style.filter= "alpha(opacity=100)";
adiv.style.opacity="100";
adiv.disabled="";
}
function ActivateAlertDiv()
{

var adiv = $get("divMain");
var lDiv = $get("Loading");
lDiv.style.left=(screen.width/2)-150;
lDiv.style.top=(screen.height/2)-20;
lDiv.style.display="Block";
adiv.style.height="100%";
adiv.style.backgroundColor="black";
adiv.style.filter= "alpha(opacity=70)";
adiv.style.opacity="0.7";
adiv.disabled=true;

}

miladr
یک شنبه 30 دی 1386, 00:00 صبح
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate><div style="position: absolute; width: 100%; height: 100%; z-index: 1; background-color:#800000; left: 0px; top: 0px;" id="layer1">
&nbsp;asdasd</div>
</ProgressTemplate>
</asp:UpdateProgress>


حیف کف نمی تونم از خودم تشکر کنم

scorpion_man
یک شنبه 30 دی 1386, 01:32 صبح
حالا اگه ajax هم نخواستی کار بکنی میتونی بدون component های ajax یه update progress برا کل صفحه درست کنی که زمانهای postback و بار شدن و غیره کار بکنه

راستی من نمیدونستم ff از filter ها پشتیبانی میکنه پس چرا style های فیلتر من فقط تو ie کار میکنن؟؟؟

Behrouz_Rad
یک شنبه 30 دی 1386, 09:36 صبح
راستی من نمیدونستم ff از filter ها پشتیبانی میکنه پس چرا style های فیلتر من فقط تو ie کار میکنن؟؟؟
فقط فیلتر opacity در IE و Firefox مشترک هست.
به عبارت دیگه، Firefox تنها فیلتر opacity رو داره.

hamedgh
یک شنبه 30 دی 1386, 09:46 صبح
حالا اگه ajax هم نخواستی کار بکنی میتونی بدون component های ajax یه update progress برا کل صفحه درست کنی که زمانهای postback و بار شدن و غیره کار بکنه

می تونی کدش بگذاری

scorpion_man
یک شنبه 30 دی 1386, 11:17 صبح
می تونی کدش بگذاری
سلام دوستان
کد نمی خواد همون کدهای javascript دوست عزیز بدون کدهای ajax رو میذاری تو یه تابع بعدش تو button هات تو onclientclick این تابع رو صدا میزنی اگه خواستی تو Load صفحه هم باشه تابع ظهور update رو اول html میذاری و تابع حذف اونو میذاری تو آخره آخره html این باعث میشه یه update مجازی ساخته بشه همین

موفق باشید

mehrdad201
یک شنبه 30 دی 1386, 15:50 عصر
از این استفاده کن. من همیشه از این روش استفاده می کنم.



<asp:Panel ID="ProgressPanel" runat="server" Style="display: none;
width: 400px; background-color: #ffffff">
<div style="padding-right: 8px; padding-left: 8px; padding-bottom: 8px; padding-top: 8px">
<table border="0" cellpadding="2" cellspacing="0" style="width: 100%">
<tbody>
<tr>
<td align="center" >
<img src="images/23.gif" alt="Progress Bar" />
</td>
</tr>
<tr>

<td style="white-space: nowrap; text-align: center">
<span dir="rtl">لطفا چند لحظه صبر کنید....</span>
</td>
</tr>
</tbody>
</table>
</div>
</asp:Panel>
<cc2:ModalPopupExtender ID="ProgressModalPopupExtender" runat="server" BackgroundCssClass="modalBackground" DropShadow="False" PopupControlID="ProgressPanel" TargetControlID="ProgressPanel">
</cc2:ModalPopupExtender>
<script type="text/javascript">
Sys.Net.WebRequestManager.add_invokingRequest(onIn voke);
Sys.Net.WebRequestManager.add_completedRequest(onC omplete);

function onInvoke(sender, args)
{
$find('<%= ProgressModalPopupExtender.ClientID %>').show();
}
function onComplete(sender, args)
{
$find('<%= ProgressModalPopupExtender.ClientID %>').hide();
}
function pageUnload()
{
Sys.Net.WebRequestManager.remove_invokingRequest(o nInvoke);
Sys.Net.WebRequestManager.remove_completedRequest( onComplete);
}
</script> این کد ها رو بزار داخل قسمت سورس aspx (توی content template) فقط TagPrefix مودال پاپ آپ آژاکس رو چک کن که درست باشه. من از C# استفاده می کنم تگ پریفیکس cc2 هستش.

ممکنه برا شما CC1 باشه و در وی بی هم فکر کنم Ajaxtoolkit باشه.

توس کد بیهایند صفحه هم بالای page load (خارج از تابع و داخل کلاس این خط رو اضافه کن


[System.Web.Services.WebMethod()]به این شکل


public partial class Page1: System.Web.UI.Page
{

[System.Web.Services.WebMethod()]
protected void Page_Load(object sender, EventArgs e)
{}
}

miladr
یک شنبه 30 دی 1386, 16:00 عصر
کد قسمت دوم و سوم اگه تو load خود صفحه کد وجود داشته باشه مشکل پیش نمیاد . کلا لطف می کنی یک توضیح بدی

mehrdad201
یک شنبه 30 دی 1386, 20:22 عصر
کد دو قسمته دوست عزیز .... بخش سومش در حقیقت همون تکمیل بخش دومه. فقط خواستم نشون بدوم که اون webmethod رو کجا باید قرار داد.

کد اول هم که در سورس aspx قرار میگیره. (در انتها باشه بهتره)
=============
فقط دقت کنید که تگ پرفیکس cc2 ممکنه عوض شه در برنامه شما که باید تصحیحش کنید.

mehrdad201
یک شنبه 30 دی 1386, 20:24 عصر
در ضمن من یه کلاس به اسم modalbackground هم در قسمت backgroundcssclass کنترل modalpopupextender قرار دادم که سی اس اس - کلاسش رو هم اینجا میذارم


.modalBackground
{
background-color:Black ;
filter:alpha(opacity=60);
opacity:0.60;
}

mehrdad201
یک شنبه 30 دی 1386, 20:25 عصر
دوستان اگه سمپل های دیگه ای هم در این مورد دارند ممنون میشم که اونها هم بذارن که ما هم بتونیم ازشون یاد بگیریم.

miladr
یک شنبه 30 دی 1386, 22:45 عصر
کد دو قسمته دوست عزیز .... بخش سومش در حقیقت همون تکمیل بخش دومه. فقط خواستم نشون بدوم که اون webmethod رو کجا باید قرار داد.

کد اول هم که در سورس aspx قرار میگیره. (در انتها باشه بهتره)
=============
فقط دقت کنید که تگ پرفیکس cc2 ممکنه عوض شه در برنامه شما که باید تصحیحش کنید.

مهرداد جان من منظورم تگ کد سوم بود می دونم توضیح بالایی اما من در مورد webmethod سوال کردم که اینکار رو page_load معمولی صفحه من تائثیر میزاره یا نه.

mehrdad201
دوشنبه 01 بهمن 1386, 00:25 صبح
فکر نکنم...

فقط زمانی که شما یک فعالیت آجاکسی رو انجام میدی پروگرس بار فعال میشه حتی اگه فشار دادن یک کلید باشه