دلیل عمل نکردن شرط زیر ، هیچ عکس العملی انجام نمیشه!! - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

دلیل عمل نکردن شرط زیر ، هیچ عکس العملی انجام نمیشه!!

+1 امتیاز

من این کد رو نوشتم طبق کمکی که آقای  veniz2008  کرده بودن. تا در صورت چک دار بودن چک باکس در دیتاگرید ویو داده در لیست باکس ذخیره بشه.

اما هیچ عکس العملی انجام نمیشه.طبق تست ها که کردم همه جا درسته جز شرط if.

private void button3_Click(object sender, EventArgs e)
        {
            i = 0;
            foreach (DataGridViewRow row in dgw2.Rows)
            {
                
                if (Convert.ToBoolean(dgw2.Rows[i].Cells[0].Value)== true)
                {
                    id = Convert.ToInt32(dgw2.Rows[i].Cells[1].Value);
                    listBox1.Items.Add(id);
                    i++;
                }
            }
                
            
        }

 

سوال شده فروردین 10, 1393  بوسیله ی rahgozar (امتیاز 224)   18 26 35

1 پاسخ

0 امتیاز

سلام.

اون قطعه کدی که قبلا براتون گذاشته بودم مربوط به حلقه for بود. در foreach بصورت جزیی قدری تغییر میکنه.

اینو توجه داشته باشید در foreach وقتی برای هر سطر گرید (DataGridViewRow) یک نام در نظر میگیریم (مثلا row)، از این به بعد نماینده شما که با سطرهای گرید روبرو میشه همین row هست. این row هر بار (و به ترتیب) به یک سطر گرید مراجعه میکنه. بنابراین وقتی می خواید یه سلول خاص از گرید رو بررسی کنید (مثلا ستون چک باکس)، باید به این row بگید برو ستون چک باکس رو بررسی کن.

در کد زیر من فرض کردم اسم ستون چک باکس شما در گرید، RecordSelected هست و مثلا قصد دارید ID مربوط به ستون هایی رو که تیک خوردن بردارید (نام ستونی که ID ها رو داره فرضا StudentID هست) :

foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                if (Convert.ToBoolean(row.Cells["RecordSelected"].Value) == true)
                    MessageBox.Show(row.Cells["StudentID"].Value.ToString());
            }

موفق باشید.

پاسخ داده شده فروردین 10, 1393 بوسیله ی veniz2008 (امتیاز 2,083)   1 5 21
انجام دادم. تمام راه حل ها ر و انجام دادم اما ارور زیر رو میده
http://upload7.ir/imgs/2014-03/41810235925452166605.png
نام ستون رو اشتباه وارد کردید. یعنی به جای اینکه ستون چک باکس رو بهش بدید، یه ستون string ای بهش دادید.
شک نداشته باشید که نام ستون چک باکس رو اشتباهی وارد کردید.
...