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

كيف أستخدم Gridview1.findcontro

بدأه AboMoayad في 9 يونيو 2008 · 4 رد · 760 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدي الكود التالي وظهر فيه رسالة ...

Object reference not set to an instance of an object

في السطر ::

ddl.Items.Clear()

والكود كاملا ::

Dim ddl As DropDownList = CType(GridView1.FindControl("ddlConsultant"), DropDownList)

		Dim ConStr As New SqlConnection
		ConStr.ConnectionString = ConfigurationManager.ConnectionStrings("MyConnectionString").ConnectionString

		ddl.Items.Clear()
		Dim cmdConsultance As New SqlCommand("SELECT Name FROM Consultance INNER JOIN Consultant ON Consultance.ConsultanceDept = Consultant.ConsultanceDept", ConStr)

		ConStr.Open()
		Dim drConsultance As SqlDataReader = cmdConsultance.ExecuteReader

		Do While drConsultance.Read()

			ddl.Items.Add(drConsultance!Name)
		Loop

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

#2

هذا معناه أنه لم يجد الكونترول.

جرب البحث عنه داخل صفوف الغريد.

GridView1.rows(0).findcontrol()

#3

الكود لا يعمل , هل هناك حدث معين أضع فيه الكود

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

#4

السلام عليكم

هو فعلا يجب ان تستخدم الصفوف للبحث عن هذه الاداة لان كل صف يحتوي على نسخة من الاداة .

الحدث يعتمد على ما تريد فعله وعلى الاغلب سيكون للتعديل او الاضافة لذا جرب الاحداث التي تبدأ ب Row مثل RowEditing

#5

أخي الكريم، الأفضل هو استخدام الحدث RowDataBound و بذلك تحصل على Reference لكل Row بعد إسناد القيم له كما يلي:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            e.Row.FindControl("ControlName");
        }

و الحل الأفضل من ذلك هو أن تجعل العمود المطلوب كـ Template Column و بعد ذلك تضيف إلى الخلية من خلال المحرر Object Data Source و DropDownList و بذلك لا تكون بحاجة إلى كتابة أي كود و الحصول على نفس النتيجة من دون الدخول في متاهة الـ FindControl.

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