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

الوصول الى عناصر قريد فيو متغيرة (access To Dynamic Gridview )

بدأه عبدالحكيم4321 في 4 يناير 2010 · 10 رد · 2,202 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم اعمل في مشروع و احتجت لبناء gv بعدد اعمدة غير ثابت واستطعت ذلك ولكن وواجهتني مشكلة كبيرة وهي عند عرض gv لاأستطيع الوصول الى عناصرها (تصبح null(

بالمرفقات مثال بسيط للمشكلة شاشة تحتوي (2 button, gridview,label) فقط الزر الأول يقوم ببناء ال gv بشكل آلي ويتم بشكل ممتاز والزر الثاني يقوم بأخذ قيمة أول حقل في gv (العمود الأول الصف الأول) وهنا المشكلة

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

اتمنى فقط من يستطيع اظهار قيمة اي حقل من gv في label

ملاحظة : احتاج قراءة القيمة من gv بعد تعديلها من المستخدم مثال اكتب محمد في ال gv واظهر القيمة في label

#2

أين الملفات المرفقة ؟

رَبِّ أَوْزِعْنِي أَنْ أَشْكُرَ نِعْمَتَكَ الَّتِي أَنْعَمْتَ عَلَيَّ وَعَلَى وَالِدَيَّ وَأَنْ أَعْمَلَ صَالِحًا تَرْضَاهُ وَأَدْخِلْنِي بِرَحْمَتِكَ فِي عِبَادِكَ الصَّالِحِينَ

تلاوات خاشعة مؤثرة

#3

آسف جدا على عدم ارفاق الملف

تم ارفاق الملف

dynamic_gridview.rar

تم تعديل هذه المشاركة بواسطة عبدالحكيم4321 في 5 يناير 2010 في 09:01

#4

ترى مشروعي متوقف بانتظار حل هذه المشكلة

ويييييييييين الخبراء

تكفون عطوني حل الله يجزاكم خير

#5

آولاً وصولك لآي Text Cell يتم بوساطة

 Label1.Text = GridView1.Rows(0).Cells(0).Text

لنآتي لمشكلتك :

ما يحدث أنك تعتمد على الحدث tb1_DataBinding لإسناد القيم للحقول من مصدر البيانات الذي قمت بتجهيزه (Data Table ) و هذا الحدث لا يتم لانه يعتمد على InstantiateIn الذي لا يتم إستدعاؤه عند الضغط على زر القراءة ..

ما آريد آن آفهمه : ما الهدف من كل هذا ؟ هل يمكن شرح الفكرة التي دفعتك لإتباع هذه الطريقة ؟

#6
م. حسام فيصل كتب:

آولاً وصولك لآي Text Cell يتم بوساطة

 Label1.Text = GridView1.Rows(0).Cells(0).Text

لنآتي لمشكلتك :

ما يحدث أنك تعتمد على الحدث tb1_DataBinding لإسناد القيم للحقول من مصدر البيانات الذي قمت بتجهيزه (Data Table ) و هذا الحدث لا يتم لانه يعتمد على InstantiateIn الذي لا يتم إستدعاؤه عند الضغط على زر القراءة ..

ما آريد آن آفهمه : ما الهدف من كل هذا ؟ هل يمكن شرح الفكرة التي دفعتك لإتباع هذه الطريقة ؟

شكرا لك أخي الكريم

فعليا أنا اريد بناء gv لكن عدد الأعمدة غير معلوم(عد الأعمدة يكون بناء على جملة sql) ثم نحضر البيانات من جدول آخر ويتم عرضها على gv ويمكن للمستخدم تعديل البيانات ثم حفظ التعديل في قاعدة البيانات

#7

ياشباب ارجو من عنده الحل مساعدتي

مشروعي متوقف له أسبوع بسبب هذه المشكلة

#8

الأخ الكريم الفاضل / عبد الحميد

السلام عليكم ورحمة الله وبركاته

يبدو أن ما تواجهه من مشلكة هو بسبب طبيعة تطبيقات الويب

عندما نقوم بالضغط على زر Button1 كما هو موجود في الملفات المرفقة المتعلقة بموقعك سيتم توليد الصفحة من جديد (Round trip or Request-Response) وهنا ستكون البيانات موجوده في GridView1، وبالمثل سيحدث هذا عندما نقوم بالضغط على زر Button2 ولكن هنا ستضيع البيانات الموجوده في الـ GridView1 وهذا هو السبب الذي يؤدي إلى NullReferenceException. وللتأكد من صحة هذا قم بـ Commet السطر 39 الموجود في الدالة Button2_Click ومن ثم قم بعرض الصفحة وتوليد الـ GridView1 وبعد ذلك قم بالضغط على زر Button2، ستلاحظ أن البيانات الموجوده في GridView1 قد ضاعت وبالتالي الـ ItemTemplate وبالتالي الـ CreateItemTemplate. لحل هذه المشكلة يجب عليك أن تقوم بـ BindData للـ GridView1 في الحدث Page_Load وأيضا إضافة الـ ItemTemplate للـ GridView1.Columns في الحدث Page_Init. لقد حاولت أن أقوم بهذه العملية وأرفق الملفات ولكنني لم أفلح في ذلك نظرا لأن الكود المرفق بلغة VB.NET. على كل حال سأرفق Solution بلغة C#.NET يوضح الفكرة.

أسأل الله أن تكون الملفات المرفقه ذو فائده وأتمنى لك كل التوفيق.

AbdulHakeem4321.zip

#9
Robatic كتب:

الأخ الكريم الفاضل / عبد الحميد

السلام عليكم ورحمة الله وبركاته

يبدو أن ما تواجهه من مشلكة هو بسبب طبيعة تطبيقات الويب

عندما نقوم بالضغط على زر Button1 كما هو موجود في الملفات المرفقة المتعلقة بموقعك سيتم توليد الصفحة من جديد (Round trip or Request-Response) وهنا ستكون البيانات موجوده في GridView1، وبالمثل سيحدث هذا عندما نقوم بالضغط على زر Button2 ولكن هنا ستضيع البيانات الموجوده في الـ GridView1 وهذا هو السبب الذي يؤدي إلى NullReferenceException. وللتأكد من صحة هذا قم بـ Commet السطر 39 الموجود في الدالة Button2_Click ومن ثم قم بعرض الصفحة وتوليد الـ GridView1 وبعد ذلك قم بالضغط على زر Button2، ستلاحظ أن البيانات الموجوده في GridView1 قد ضاعت وبالتالي الـ ItemTemplate وبالتالي الـ CreateItemTemplate. لحل هذه المشكلة يجب عليك أن تقوم بـ BindData للـ GridView1 في الحدث Page_Load وأيضا إضافة الـ ItemTemplate للـ GridView1.Columns في الحدث Page_Init. لقد حاولت أن أقوم بهذه العملية وأرفق الملفات ولكنني لم أفلح في ذلك نظرا لأن الكود المرفق بلغة VB.NET. على كل حال سأرفق Solution بلغة C#.NET يوضح الفكرة.

أسأل الله أن تكون الملفات المرفقه ذو فائده وأتمنى لك كل التوفيق.

اشكرك اخي الكريم Robatic

وطبقت المثال وشغال مية بالمية

جزاك الله ألف خير

لكن احيانا بناء gv يعتمد على اختيار المستخدم من listitem وبناء على اختياره يتم بناء gv (عدد الأعمدة يعتمد على اختيار المستخدم من listitem)

#10

الأخ الكريم / عبدالحميد

في هذه الحالة أنا أعتقد انه ينبغي عليك إستخدام الـ ViewState أو الـ Session بحيث انه عندما يتم إستخدام الـ ItemList لبناء الـ GridView قم بإدخال معلومات تفيدك لإعادة بناء الـ GridView في الـ ViewState أو الـ Session ومن ثم في حدث Page_Init قم بفحص الـ ViewState أو الـ Session بحيث لو كانت هناك معلومات عن الـ GridView فهذا يدل على انه يجب بناء الـ GridView كما هو موضح في المثال التالي :

prtected void ItemList1_SelectedIndexChange(object source, EventArgs e) {

	// Build you GridView
	...

	ViewState.Add("GridView_Columns", useful_information_for_rebulding_gridview);
}

protected void Page_Init(object source, EventArgs e) {
	if(ViewState["GridView_Columns"] != null) {
		// Rebuild your GridView
	}
}

أتمنى لك التوفيق

#11

اشكرك شكر جزيل اخي الكريم Robatic

طبقت ماكتبت وانحلت المشكلة أسأل الله لك العلم النافع والعمل الصالح

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