الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

alert after validation and insert

مغلق
بدأه remaz1980 في 22 يوليو 2007 · 14 رد · 1,778 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أخواني لدي مشكلة وأرجو ان تساعدوني فقد حاولت البحث عنها كثيرا بالمنتدى والانترنت لكن لم أجد حلا

لدي Detailsview وقمت بوضع رسالة عند ادخال new record في button insert

كالتالي

<asp:Button ID="Button2" runat="server" CausesValidation="False" CommandName="insert" OnClientClick='return alert("تم إضافة سجل جديد");' Text="مسح" />

وهي تعمل بدون مشاكل

الان قمت باضافة required validation

و اريد الرسالة ان تظهر بعد التاكد من الادخال وليس قبل الفالديشن

قمت باضافة الرسالة في iteminseted event

كالتالي

 Response.Write("<script>alert('تم إضافة سجل جديد ...');</script>")

لكن هناك مشكلة غريبة

عند الضغط على اضافة يتم عمل

postback

وقبل العودة لل

detailsview

وتظهر الرسالة في صفحة بيضاء فارغة وتتكرر مرتين

اريد الرسالة تظهر على نفس الصفحة الموجود بها detailsview

كالسابق قبل استخدام validation

#2

استخدم عناصر Validation المتوفرة في ASP.NET 2.0

استخدم عنصر تحقق وضع عنصر Summary

واضبط عنصر Summary بأن يظهر Javascript ولا يظهر Message

واحذر من المصيبة السابقة

Response.Write("<script>alert('تم إضافة سجل جديد ...');</script>")

فهي خطأ فادح

أما اذا أردت إظهار رسالة فإليك ما أقوم أنا شخصيا باستعماله:

الخطوة الأولى : ضع النص التالي في ملف وسمه Alert.cs (كود C# 2.0) وضعه في App_Code (التسميات للتنظيم فقط)

using System.Web;
using System.Text;
using System.Web.UI;

public static class Alert
{

  public static void Show(string message)
  {
	string cleanMessage = message.Replace("'", "\\'");
	string script = "<script type='text/javascript'>alert('" + cleanMessage + "');</script>";

	Page page = HttpContext.Current.CurrentHandler as Page;

	if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert"))
	{
	  page.ClientScript.RegisterClientScriptBlock(typeof(Alert), "alert", script);
	}
  }

}

الآن استخدم التابع التالي كبديل عن المصيبة السابقة :

Alert.Show("تم اضافة عنصر جديد");
#3

أخي اشكر تعاونك وشرحك

بس لماذا هي مصيبة فادحة!!!

وايضا كيف استخدم validation summary بحث عند تحقق ال validation تظهر رسالة الاضافة

مشكووووووور

#4

طيب

طريقة استخدام Summary:

أول شي رح نضيف عنصرين هما زر وعنصر ادخال نص كالتالي:

الهدف أن لا ترسل الصفحة للسيرفر إلا اذا كان هنالك عنوان بريد الكتروني صالح

ضع الكود التالي ضمن صفحة aspx وشغل الصفحة سترى النتيجة أن رسائل التنبيه عبارة عن Alert

أنا فهمت مشكلتك:

عليك وضع الخاصية

 Display="None"

لكافة عناصر التحقق وضبط الخاصيتان :

ShowMessageBox="True" ShowSummary="False"

لعنصر ValidationSummary

<table>
			<tr>
				<td>

				</td>
				<td>
					<asp:TextBox ID="txtName" runat="server" ValidationGroup="Test"></asp:TextBox>		
				</td>
				<td>
					<asp:Button ID="btn_Submit" runat="server" Text="Submit the data" ValidationGroup="Test" />		
				</td>
			</tr>
		</table>		
		<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="Enter Valid Email Address" ControlToValidate="txtName" Display="None" SetFocusOnError="True" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ValidationGroup="Test"></asp:RegularExpressionValidator>
		<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtName" Display="None" ErrorMessage="Email Address Required" SetFocusOnError="True" ValidationGroup="Test"></asp:RequiredFieldValidator>
		<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="Test" />
#5

اخوي الف شكر

كل الي قلته سويته وضبط معي

بقي شيء واحد

أبي بعد مايصير ال validation وتنفذ ال insert تظهر( تم اضافة السجل ) Alert لكن مثل السابقة ابيها تكون في client side

#6

ليش في Client Side ؟.

اذا كان الكود يتم تنفيذه في Server Side فلماذا تريد تنفيذ ذلك في Client Side

وعلى العموم أنا لا أحبذ alert أبدا لأنه (على سبيل المثال لا يعمل مع Ajax)

ولكنه حل رائع لغير آجاكس

#7

انا لم استخدم Ajax

هل لها فائدة مع Detailsview

#8

للآجاكس فائدة على كل الموقع اذا استخدمت بالشكل الصحيح

فهي تخفف من حدة الارسالات المتكررة أو ما يسمى تقنيا (PostBack) لتستغني عنها بعملية اسمها CallBack ترسل من خلالها بعض المعلومات للسيرفر

التعامل مع الصفحة سيتغير قليلا فقط من حيث امكانية الوصول وغيرها من بعض الحالات فقط

في المجمل هي رائعة الأداء

#9

شكرا أخوي

صحيح قرات كثيرا عن الاجاكس وطبقت مثال وهي بالفعل رررررائعة

لكن لدي استفسار؟

عندي مشروع موقع كبير ب ASP هل يمكن التعديل عليه واضافة update panel بعد تنزيل AJAX framework

او يجب ابدا مشروع جديد واختار ASP.net AJAX Enhanced

#10

اتساءل ان كانت الطريقة التي تناقشونها تعمل في حالة فشل عملية الإدخال لأي سبب

The World Must Be Crazy

#11

في حال فشل الادخال لأي سبب فالصفحة ستنذر المستخدم بالخطأ

وستقوم بعدم ارسال ابيانات للسيرفر

في حال تعطيل الجافاسكريبت ستكون الخاصية IsValid التابعة لعنصر الصفحة هي false وطبعا في الكود ستتحقق منها قبل العملية المناسبة (ادخال سجل في قاعدة بيانات أو غير ذلك )

#12

شكرا أخي Arwany

انا اقصد

اقتباس
أبي بعد مايصير ال validation وتنفذ ال insert تظهر( تم اضافة السجل ) Alert لكن مثل السابقة ابيها تكون في client side

اما بقية الأمر فأهمه كما ذكرت انت

يعني صاحب السؤال remaz1980 كانت مشكلته الاولى التحقق ومن ثم اصبحت بعد ذلك اعلام المستخدم ان سجلا جديدا قد تمت إضافته ,, قصدي من كل هذا ان جهينة في هذه الحال قد تكون قاعدة البيانات أو أقرب من ذلك كحدث ادخال البيانات (إن لم يستطع هذا الحدث الإمساك بأي خطأ) كما وضحت انت

The World Must Be Crazy

#13

لقد قمت بالاشارة الى ما تريد بوضع كلاس اسميته Alert فيه منهج ستاتيكي : Show تستطيع استدعاءه من Server Side بعد عملية الادخال بنجاح وفيه تستطيع أن تظهر رسالة alert عادية تقول بأنه تم الادخال بنجاح

#14

أخوي newbie

فعلا كانت مشكلتي اظهار alert بعد التاكد من الادخال

ولكن استفدت من نصيحة الأخ arwany وقمت بتغير الطريقة نوعا ما

واستبدلت ال alert بنص عادي يظهر في label

#15

نعم يا اخي Arwany كنت استخدم نفس الطريقة وبنفس المنهج الستاتيك ,, لا عليك ,,يبدو انني ذهبت بالموضوع بعيدا

اخي remaz1980 كده تمام

The World Must Be Crazy

هذا الموضوع مغلق.

مواضيع مشابهة