PDA

View Full Version : حرفه ای: آپدیت پنل در گرید ویو (سورس قرار داده شد) . راه حل چیست ؟



tarsim
پنج شنبه 17 مهر 1393, 06:31 صبح
سلام یک گریدویو دارم داخل یک دکمه . گرید ویوم رو بایک دیتاتیبل پر کرم که 2 سطون و 4 سط داره . یک دکمه هم قرار دادم . با استفاه از commadname به کلیک هر دکمه از هر سطر گریدویو دست رسی دارم و توی کد دکمه یک وقفه 5 ثانیه ایجاد کردم تا وقتی هر سطری کلیک شد به وسیله آجکس و آپدیت پنل زمان وقفه رو نشون بدم. و بدون هیچ مشکلی با کلیک بر روی هر یک از سطر ها آ÷دیت پنل سطر مورد نظر درست کار میکند. اما مشکل اینجاست .
که وقتی مثلا روی دکمه سطر اول کلیک شد و کد هاش اجرا شد در این میان اگر روی دکمه های دیگر مثل سطر دوم و سوم کلیک شد . بلافاصله سطر اول لودینگش میرود و سطری که کلیک شد لودینگش ظاهر میشود. که این یک مشکل است . به عنوان مثال یک کاربر سطر اول را لایک میکند که اگر سرعت نتش پایین باشد نوشته loading که در UpdateProgress1 قرار دارد اجرا شده و لی هنوز به کد های سمت سرور اجرا نشده . و اگر دریان میان روی سطر 2 دوم کلیک شود کد های سطر اول که هنوز اجرا نشده دیگر اجرا نمیشود و به جاش کد های سطر دوم اجرا میشود.
سورس را ضمینه کردم لطفا راهنمایی بفرمائید.کل منظور من این است وقتی همزمان در صدم ثانیه روی دکمه اول دوم سوم کلیک شد loading هر سطر نمایش دهد و کد ها هم به ترتیب اجرا شود
خواهشی که از شما دارم لطفا بی پاسخ نزارید.

دانلود سورس (http://barnamenevis.org/attachment.php?attachmentid=124377&stc=1) 124377

ahmad156
پنج شنبه 17 مهر 1393, 07:44 صبح
دوست عزیز شما برای این کار باید زمان اجرا صفحه رو غیرفعال کنین تا اجرا تموم بشه.UpdateProgress تون رو به صورت زیر تغییر بدین.

<asp:UpdateProgress ID="UpdateProgress1" AssociatedUpdatePanelID="up1" runat="server"
DisplayAfter="100">
<ProgressTemplate>
<div id="progressBackgroundFilter" class="progressBackgroundFilter">
</div>
<div id="processMessage" class="processMessage">
<table class="wide">
<tr>
<td>لطفا منتظر بمانید.....
</td>
</tr>
<tr>
<td>
<img src="/Content/Images/loading.gif" alt="" />
</td>
</tr>
</table>
</div>
</ProgressTemplate>
</asp:UpdateProgress>


/******************/
.progressBackgroundFilter
{
position: fixed;
top: 0px;
bottom: 0px;
left: 0px;
right: 0px;
overflow: hidden;
padding: 0;
margin: 0;
background-color: #acacac;
opacity: 0.4;
z-index: 1000;
width:100%;
height:1500px;
}
.processMessage
{
position: fixed;
font-family:tahoma;
font-size:12px;
font-weight:bold;
top: 50%;
left: 45%;
padding: 10px;
width:150px;
z-index: 1001;
color: white;

}
.processMessage td {
text-align: center;
}
/*************/

tarsim
پنج شنبه 17 مهر 1393, 10:49 صبح
دوست عزیز شما برای این کار باید زمان اجرا صفحه رو غیرفعال کنین تا اجرا تموم بشه.UpdateProgress تون رو به صورت زیر تغییر بدین.
[CSHARP]

[/CSS]

باتشکر از نظر شما ولی شما متوجه من ظور بنده نشدید . خیلی سایت ها هستند که همزمان میشود چندی دکمه را به صورت همزمان کلیک کرد . ولی با این روش فقط میشود یک دکمه را کلیک کرد تا فعال شوند و بعدی را کلیک کرد. یعنی روش دیگری دارد ؟

ahmad156
پنج شنبه 17 مهر 1393, 11:22 صبح
اون بحث پردازش موازی میشه که کلاً بحثش جدا و خیلی مفصل هست.از دات نت 4.5 به بعد مایکروسافت async await (http://blogs.msdn.com/b/pfxteam/archive/2012/04/12/async-await-faq.aspx) رو مطرح کرد که فکر میکنم به کارتون بیاد.