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

استفسار عن dataGridView

بدأه elgoeg في 25 أبريل 2010 · 4 رد · 661 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

لدي هذا السوال عن dataGridView وارجو المساعدة؟

لدي داتا غريد تحوي عامودين العمود الاول نص والعمود الثاني check box

ما هو الحدث الذي يساعدني عند الضغط على الcheck boox يتم اخذ النص

قمت بالمحاولة ولكنه جميع الاحداث يتم تنفيذها قبل الضغط على check box وفقا للكود

private void dataGridView2_CellValueChanged(object sender, DataGridViewCellEventArgs e)

{

try

{

s = "";

Boolean enter = false;

for (int i = 0; i < dataGridView2.RowCount; i++)

{

Boolean b = (Boolean)dataGridView2.Rows.Cells[1].Value;

if (b)

{

if (enter)

s = s + ",\"" + dataGridView2.Rows.Cells[0].Value.ToString() + "\"";

else

s = s + "\"" + dataGridView2.Rows.Cells[0].Value.ToString() + "\"";

enter = true;

}

}

label1.Text = s;

}

catch

{

}

}

فتظهر لي المشكلة التالية انه اخر قيمة تم التعليم عليها لا يتم اخذها كما في الصورة

وشكرا للرد والمساعدة

post-63236-12721915866159_thumb.jpg

#2

السلام عليكم ورحمة الله تعالى وبركاته، يمكنك ملاحظة علامة التحرير (قلم صغير) بجانب السطر الذي تقوم بالنقر عليه، وهذا يشير إلى أنه لم يتم اعتماد القيم الجديدة بعد (CellEndEdit) ومعنى هذا أنه في أي حدث قمت بوضع هذا الكود فقيمة (الخلية) التي نقرت عليها أخيرا لاتزال (فعليا) False مادمت لم تخرج منها ليتم اعتمادها

فكر بطريقة أخرى لعمل الحلقة، ربما بوضع زر ينقر عليه المستخدم بعد أن يتم اختياره

#3

لكن انا افضل عند النقر على كل شك بوكس يتم اخذ القيمة لانه بعد ذلك سوف اربط الحدث مع الداتا بيز بحيث يتم الاستعلام في الجدول حسب قيمة النص المختارة

وربطه بحدث الزر ممكن ولكنه ليس عملي للمستخدم

#4

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

ضع الكود التالي في الحدث CellClick الخاص بالأداة dataGridView :

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            int x;

            if (e.ColumnIndex != 1) return;

            if (Convert.ToBoolean(dataGridView1[1,e.RowIndex].Value)==true)
                dataGridView1[1,e.RowIndex].Value=false;
            else
                dataGridView1[1, e.RowIndex].Value = true;


            dataGridView1.EndEdit();

            string s = "";

            for(x=0;x<dataGridView1.RowCount;x++)
            {
                if (Convert.ToBoolean(dataGridView1[1,x].Value)==true)
                    s = s + ",\"" + dataGridView1[0,x].Value.ToString() + "\"";
            }

            label1.Text = s;
        }

تحياتي :)

#5

شكرا جزيلا على الحل :)

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