اشتراکها
بعضی مواقع بهتر است یک دکمه در حال انجام پردازشهای سمت سرور غیر فعال شود و وقتی عملیات سمت سرور به پایان رسید این دکمه دوباره فعال شود. غیر فعال کردن یک دکمه به این دلیل انجام میشود که از postbackهای مجدد در حین postback شدن صفحه جلوگیری شود.
فرض کنید در رویداد کلیک یک دکمه کدی نوشته اید که اطلاعات یک دانشجو را ذخیره کند. کاربر نرم افزار بعد از یک بار کلیک روی دکمه، درخواستی به سرور میفرستد و این باعث میشود کدهای درون رویداد کلیک دکمه اجرا شوند، به دلیل این که کاملا این کدها اجرا نشده اند، صفحه هم postback نشده است. کاربر به هر دلیل صبر نمیکند تا این پردازش تمام شود (شاید او نمیداند عملیاتی در سمت سرور در حال اجرا شدن هست چون پیغامی به او نشان داده نشده است)، در نتیجه باز هم روی همین دکمه کلیک میکند و باعث میشود در حین پردازش کدهای درون دکمه توسط سرور، دوباره درخواستی به سمت سرور فرستاده شود و باز هم کدهای درون همین دکمه به اجرا در آیند. به عبارت بهتر در حین postback شدن صفحه دوباره درخواست postback کردن صفحه را میدهد و سرور هم در حین انجام کدهای درون دکمه با درخواست قبلی، دوباره کدهای درون رویداد کلیک را اجرا میکند. در این مثال این کار باعث میشود کدهای رویداد کلیک دکمه، به تعداد کلیکهای انجام شده اجرا شوند. در نتیجه به همین تعداد میتواند یک دانشجوی مستقل در دیتابیس ذخیره شود. این میتواند مشکلات بسیاری را همراه داشته باشد.
به همین دلیل بهتر است با کلیک روی این دکمه این کارها اتفاق بیفتند:
الف) غیرفعال کردن دکمه در حین انجام پردازشهای سمت سرور
ب) نشان دادن یک پیغام به کاربر در حین انجام پردازشهای سمت سرور
ج) فعال کردن دکمه بعد از انجام پردازشهای سمت سرور
برای غیرفعال کردن دکمه در حین انجام پردازشهای سمت سرور نمیتوان از کدهای سمت سرور استفاده کرد. چون تا کاملا صفحه postback نشود نمیتوان این کدها را به صفحه اعمال کرد. پس این گزینه کنار میرود.
راه حل بسیار خوب استفاده از جاوا اسکریپت است. مثال زیر را ببینید:
در رویداد OnClientClick کارهای (الف) و (ب) انجام میشوند و با false کردن مقدار رویداد UseSubmitBehavior کار (ج) انجام میشود.
و در رویداد کلیک دکمه کد زیر را بنویسید:
در این رویداد باید یک دانشجو اضافه شود. برای ایجاد یک پردازش سمت سروری دو ثانیه ای از متد Sleep استفاده شده است.
کد برگرفته شده از : dotnetforum.lk
فرض کنید در رویداد کلیک یک دکمه کدی نوشته اید که اطلاعات یک دانشجو را ذخیره کند. کاربر نرم افزار بعد از یک بار کلیک روی دکمه، درخواستی به سرور میفرستد و این باعث میشود کدهای درون رویداد کلیک دکمه اجرا شوند، به دلیل این که کاملا این کدها اجرا نشده اند، صفحه هم postback نشده است. کاربر به هر دلیل صبر نمیکند تا این پردازش تمام شود (شاید او نمیداند عملیاتی در سمت سرور در حال اجرا شدن هست چون پیغامی به او نشان داده نشده است)، در نتیجه باز هم روی همین دکمه کلیک میکند و باعث میشود در حین پردازش کدهای درون دکمه توسط سرور، دوباره درخواستی به سمت سرور فرستاده شود و باز هم کدهای درون همین دکمه به اجرا در آیند. به عبارت بهتر در حین postback شدن صفحه دوباره درخواست postback کردن صفحه را میدهد و سرور هم در حین انجام کدهای درون دکمه با درخواست قبلی، دوباره کدهای درون رویداد کلیک را اجرا میکند. در این مثال این کار باعث میشود کدهای رویداد کلیک دکمه، به تعداد کلیکهای انجام شده اجرا شوند. در نتیجه به همین تعداد میتواند یک دانشجوی مستقل در دیتابیس ذخیره شود. این میتواند مشکلات بسیاری را همراه داشته باشد.
به همین دلیل بهتر است با کلیک روی این دکمه این کارها اتفاق بیفتند:
الف) غیرفعال کردن دکمه در حین انجام پردازشهای سمت سرور
ب) نشان دادن یک پیغام به کاربر در حین انجام پردازشهای سمت سرور
ج) فعال کردن دکمه بعد از انجام پردازشهای سمت سرور
برای غیرفعال کردن دکمه در حین انجام پردازشهای سمت سرور نمیتوان از کدهای سمت سرور استفاده کرد. چون تا کاملا صفحه postback نشود نمیتوان این کدها را به صفحه اعمال کرد. پس این گزینه کنار میرود.
راه حل بسیار خوب استفاده از جاوا اسکریپت است. مثال زیر را ببینید:
<asp:Button runat="server" ID="btnProcess" Text="پردازش" onclick="btnProcess_Click" OnClientClick="this.disabled = true; this.value = 'در حال پردازش اطلاعات ...';" UseSubmitBehavior="false" /> <asp:Label runat="server" ID="lblMessage" Text=""></asp:Label>
و در رویداد کلیک دکمه کد زیر را بنویسید:
protected void btnProcess_Click(object sender, EventArgs e) { // insert student in database System.Threading.Thread.Sleep(2000); lblMessage.Text = "پردازش اطلاعات به پایان رسید"; }
کد برگرفته شده از : dotnetforum.lk
اشتراکها
NET 9 Release Candidate 2. منتشر شد
.NET 9 Release Candidate 2 is now available!
As we prepare the general availability (GA) release of .NET 9 in November we are adding our final touches around performance, stability, and any additional optimizations to make it the best release of .NET 9. Today, we are excited to announce the release of .NET 9 Release Candidate 2. As with Release Candidate 1, this release is covered by a go-live license so you can receive support when using it in your production applications. We encourage developers today to try out this latest release and give the teams feedback on anything that you find in your development so we can incorporate any additional enhancements into the final release.
هر چند مدتی است که اس کیوال سرور 2008 ارائه شده یا سرویس پک 3 اس کیوال سرور 2005 اخیرا منتشر گردیده، اما هنوز هم هاستهای ما زحمت ارتقاء را به خود ندادهاند. (چرا باید پول خرج کنند؟!)
اس کیوال سروری را که الان برای برنامه نویسی از آن استفاده میکنم 2008 است و چند روز قبل قصد داشتم به اس کیوال سرور 2000 هاست محترم از طریق management studio 2008 متصل شوم تا تغییرات جدید را به دیتابیس سایت اعمال کنم.
اولین تلاش برای اتصال با خطای زیر متوقف شد!
TITLE: Microsoft SQL Server Management Studio
------------------------------
Failed to retrieve data for this request. (Microsoft.SqlServer.Management.Sdk.Sfc)
------------------------------
ADDITIONAL INFORMATION:
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
------------------------------
Server user 'hostXYZ' is not a valid user in database 'hostZXY'. (Microsoft SQL Server, Error: 916)
------------------------------
------------------------------
Failed to retrieve data for this request. (Microsoft.SqlServer.Management.Sdk.Sfc)
------------------------------
ADDITIONAL INFORMATION:
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
------------------------------
Server user 'hostXYZ' is not a valid user in database 'hostZXY'. (Microsoft SQL Server, Error: 916)
------------------------------
فقط هم management studio 2008 این مشکل را دارد. با 2005 تست کردم مشکلی نبود.
پس از مدتی جستجو، نتیجه کار به صورت زیر است:
به منوی View گزینه Object Explorer Details مراجعه کنید (در management studio اس کیوال سرور 2008). روی هدر صفحهای که ظاهر میشود کلیک راست کرده و تیک collation را بردارید (شکل زیر). ممکن است collation دیتابیس آفلاین، نال گزارش شود و این مورد مشکل درست میکند. تیک collation را که بردارید این مورد بررسی نشده و لیست دیتابیسها نمایش داده میشود.
The "Blazor United" effort is really a collection of features we're adding to Blazor so that you can get the best of server & client based web development. These features include: Server-side rendering, streaming rendering, enhanced navigations & form handling, add client interactivity per page or component, and determining the client render mode at runtime. We've started delivering server-side rendering support for Blazor with .NET 8 Preview 3, which is now available to try out. We plan to deliver the remaining features in upcoming previews. We hope to deliver them all for .NET 8, but we'll see how far we get.