PDA

View Full Version : سوال: چک کردن true بودن چک باکس در data gridview



elahe software
دوشنبه 20 آذر 1391, 19:00 عصر
من یهdata gridview دارم به شکل زیر :


96426
http://uplod.ir/v806lzut9r4z/datagridview.JPG

برای اینکه چک کنم کدوم چک باکس تیک خورده از این کد استفاده کردم ولی خطا میده!!




for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (dataGridView1[1, i].Value.ToString() == "true")
{
NumRoom = Int32.Parse(dataGridView1[0, i].Value.ToString());
label4.Text = dataGridView1[0, i].Value.ToString();


}
}

ali_habibi1384
دوشنبه 20 آذر 1391, 19:31 عصر
اگر تيك داشته باشه :
if (dataGridView1[0, i].Value.ToString() == true.ToString())
اگر نداشت يا null هست يا false

elahe software
دوشنبه 20 آذر 1391, 19:55 عصر
دقیقا همین کد رو نوشتم ولی این خطا رو میده . . .

96424

elahe software
دوشنبه 20 آذر 1391, 20:19 عصر
دوباره همون خطا پست 3 رو میده!!!

merlin425
دوشنبه 20 آذر 1391, 20:21 عصر
داخل شرط این جوری مقایسه رو انجام بده
Convert.ToBoolean(dataGridView1.CurrentRow.Cells["chemploee"].Value) == true;00

elahe software
دوشنبه 20 آذر 1391, 20:34 عصر
داخل شرط این جوری مقایسه رو انجام بده
Convert.ToBoolean(dataGridView1.CurrentRow.Cells["chemploee"].Value) == true;00

این کد هم خطا داد.




این کد رو نوشتم درست شد.


if(dataGridView1.Rows[i].Cells["انتخاب"].Value != null)

ali_habibi1384
دوشنبه 20 آذر 1391, 21:12 عصر
نوع خطايي كه شما ضميمه كرديد مربوط به اينكه نام ستون وجود نداره. بجاي نوشتن نام ستون شماره اونو بذاريد مثل نمونه اي كه من براتون گذاشتم.

maryam145
شنبه 15 فروردین 1394, 15:25 عصر
سلام خسته نباشین دوستان منم دقیقا همین مشکل و دارم میشه کد درست و بزارین

am_al_59
شنبه 15 فروردین 1394, 15:56 عصر
این کد خطا میده در صورتی که مقدار Cell برابر null باشه

if (dataGridView1[0, i].Value.ToString() == true.ToString())


چون null متد ToString نداره

کد زیر خطا نداره چون درصورت null بودن false برمیگرده


Convert.ToBoolean(dataGridView1.CurrentRow.Cells["نام ستون"].Value)


اگر برای کد بالا خطا دارید مشکل از نامی هست که زدید

اگر میخواهید شرط رو در یک خط تست کنید و برای مقادر null هم false برگرده کدش این میشه

if(dataGridView1.Rows[i].Cells["نام ستون"].Value==null?false:(bool)dataGridView1.Rows[i].Cells["نام ستون"].Value)

maryam145
شنبه 15 فروردین 1394, 16:04 عصر
دوست عزیز من این کد و نوشتم ولی وقتی رو دکمه کلیک میکنم اررور میده:

(++for(int i=0 ; i<dataGridView1.Rows.Count ; i
}
(if(Convert.ToBoolean(dataGridView1.CurrentRow.Cel ls["numberphon"].Value
{
label4.Text = Convert.ToString(dataGridView1.Rows[i].Cells["numberphon"].Value);
}

maryam145
شنبه 15 فروردین 1394, 16:05 عصر
می خوام با کلیک روی دکمه باتن محتویات سلول شماره تلفن و تو تکس لیبل ام نشون بده ؟؟

am_al_59
شنبه 15 فروردین 1394, 16:09 عصر
شما توی حلفه در شرط CurrentRow را تست کردید
بعد در شرط row[i] قرار دادین یعنی دارین یک cell رو چک میکنین بعد با cell دیگه کار میکنین

این خطو

if(Convert.ToBoolean(dataGridView1.CurrentRow.Cell s["numberphon"].Value)



تبدیل کنید به



if(Convert.ToBoolean(dataGridView1.Rows[i].Cells["numberphon"].Value)

maryam145
شنبه 15 فروردین 1394, 16:28 عصر
ممنوم درست شد فقط به جای اسم ستون شماره اندیس و نوشتم

maryam145
شنبه 15 فروردین 1394, 16:29 عصر
چطوری میتونم ی چک باکس بزارم ک کل سطرها رو خودکار انتخاب کنه و با ی چک باکس دیگه همه چک باکس ها رو غیر فعال کنه؟؟

am_al_59
شنبه 15 فروردین 1394, 16:32 عصر
توی CheckedChanged چک باکسی که در فرم قرار داره همین حلقه ای که نوشتینو بنویسید و مقادیر cell های مربوطه رو برایر با مقدار چک باکسی که برای متد CheckedChanged برنامه نوشتین بزارید


private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
dataGridView1.Rows[i].Cells["ستون چک باکس"].Value = checkBox1.Checked;
}

maryam145
شنبه 15 فروردین 1394, 16:43 عصر
ممنونم که به سوال ها پاسخ میدین شما بخشی از سوال منو جواب دادین کلمه های انتخاب همه و حذف و با چک باکسشون کجا بنویسم ؟؟تو کدوم سطر وارد کنم تو سطر هدر؟

am_al_59
شنبه 15 فروردین 1394, 16:50 عصر
کلمه های انتخاب همه و حذف و با چک باکسشون کجا بنویسم
این قسمت از جملتونو از هر طرف خوندم کلاً نفهمیدم
اون چیزی که من گفتم برای اینه که یک چک باکس تو فرم بزارید و هروقت روش کلیک کنید اگر تیک بخوره کل سطرها تیک میخوره اگرنه که کل سطرها تیکش برداشته میشه

حالا منظورتون اینه که شما برای حذف سطرهای تیک خورده هم می خواهید یک کلید در فرم قرار بدین که با کلیک روی اون سطرهای تیک خورده حذف بشه؟ کدش اینه

private void button1_Click(object sender, EventArgs e)
{
List<DataGridViewRow> removeRow=new List<DataGridViewRow>();
for (int i = 0; i < dataGridView1.Rows.Count; i++)
if (dataGridView1.Rows[i].Cells["نام ستون"].Value == null ? false : (bool)dataGridView1.Rows[i].Cells["نام ستون"].Value)
removeRow.Add(dataGridView1.Rows[i]);
foreach (var item in removeRow)
dataGridView1.Rows.Remove(item);
}

maryam145
شنبه 15 فروردین 1394, 17:04 عصر
نمیشه این چک باکس ها تو جدولم باشن میخوام تو جدولم باشن چک باکس انتخاب همه تو جدولم باشه ولی نمیدونم کجای جدولم بزارم؟

am_al_59
شنبه 15 فروردین 1394, 17:07 عصر
چرا اونم میشه برای رویداد ColumnHeaderMouseClick بنویسید

private bool _chk = false;


void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (dataGridView1.Columns["چک باکس"].Index == e.ColumnIndex)
{
_chk = !_chk;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
dataGridView1.Rows[i].Cells["چک باکس"].Value = _chk;
}
}

maryam145
شنبه 15 فروردین 1394, 17:09 عصر
حالا دوست عزیز کدی میخوام که اطلاعات سطرهای انتخاب شده با چک باکس و همه رو برام تو ی جایی ذخیره کنه مثل آرایه یا جدول ؟؟

am_al_59
شنبه 15 فروردین 1394, 17:13 عصر
شما اصلاً کدهارو نگاه نمی کنی فقط بدون توجه میپرسی تو دوتا پست قبل نوشتم


List<DataGridViewRow> removeRow=new List<DataGridViewRow>();
for (int i = 0; i < dataGridView1.Rows.Count; i++)
if (dataGridView1.Rows[i].Cells["نام ستون"].Value == null ? false : (bool)dataGridView1.Rows[i].Cells["نام ستون"].Value)
removeRow.Add(dataGridView1.Rows[i]);

maryam145
شنبه 15 فروردین 1394, 17:26 عصر
این کدتون اطلاعات و تو لیست Remove row ذخیره میکنه ؟ خیلی ممنون از راهنمایی تون انشالاه جواب کمکتون بگیرین چون خیلی کمک کردین من مبتدی هستم

am_al_59
شنبه 15 فروردین 1394, 17:28 عصر
بله میریزه تولیست removeRow دلیلش هم اینه که نمیتونین از گریدی که توی حلقه بر اساس ترتیب خطوطش پردازش میکنین خطی رو حذف کنید
برای همین اول میریزیم توی یک لیست بعد از حلقه پاک میکنیم

بازهم کمکی از دستم بر بیاد انجام میدم
موفق باشید

maryam145
شنبه 15 فروردین 1394, 17:47 عصر
اگر بخوام فقط اطلاعات سطرهای انتخاب شده (یعنی چک باکس هاشون تیک خورده) رو ذخیره کنم باید تیکه کد خط اول و بنویسم؟

am_al_59
شنبه 15 فروردین 1394, 17:50 عصر
ظاهراً اون عبارت removeRow شمارو گمراه میکنه. با این کد اطلاعت خطوط انتخاب شده در لیست selectRows قرار میگیره

List<DataGridViewRow> selectedRows=new List<DataGridViewRow>();
for (int i = 0; i < dataGridView1.Rows.Count; i++)
if (dataGridView1.Rows[i].Cells["نام ستون"].Value == null ? false : (bool)dataGridView1.Rows[i].Cells["نام ستون"].Value)
selectedRows.Add(dataGridView1.Rows[i]);

maryam145
یک شنبه 16 فروردین 1394, 07:02 صبح
ممنون از راهنمایی تون میشه در مورد خط دوم کدتون ی کم توضیح بدین ؟؟ نام ستون منظور ستون چک باکس هست و علامت سوال منظورتون Or هست؟؟

همـااا
یک شنبه 16 فروردین 1394, 08:11 صبح
ممنون از راهنمایی تون میشه در مورد خط دوم کدتون ی کم توضیح بدین ؟؟ نام ستون منظور ستون چک باکس هست و علامت سوال منظورتون Or هست؟؟

اون سطر در حقیقت یه if یه خطی یا همون inline if هست ... تو این مدل if ها ، اگه شرط true باشه دستور بعده ؟ اجرا میشه و اگه false باشه دستور بعده : اجرا میشه ...
راجع نام ستون هم بهتره خودشون بیان توضیح بدن من هنوز به این مباحث نرسیدم :لبخند:

hbsoft
یک شنبه 16 فروردین 1394, 08:16 صبح
سلام دوستان
من می خوام از تو سی شارپ آدرس یک فایل رو بدم و ازش تو برنامه استفاده کنم ولی روش های آدرس دهی رو بلد نیستم هر چی گشتم چیزی پیدا نکردم یعنی پیدا کردم ولی نتونستم ازشون استفاده کنم اگه کسی میدونه لطفا کمک کنه. دوستان من کار با فایل رو بلدم لطفا فقط آدرس دهی ها رو بگین ممنون

am_al_59
یک شنبه 16 فروردین 1394, 08:24 صبح
روش های آدرس دهی متفاوتی هست
اگر فایلتون یک ورودی توسط کاربره که باید آدرسشو مثل پارامتر استفاده کنید مثل


File.Open("c:\\filename",Fille.Open)


اگر فایلتون مثل Resource در برنامه قرار داره با کلاس ResourceManager باید دسترسی داشته باشید
اگر هم منظورتون استفاده از یک فایل Dll هست که باید به اون Reference بدین
مشخص کنید فایلتون چیه و کجاست تا بهتر بتونم راهنمایی کنم

maryam145
یک شنبه 16 فروردین 1394, 11:12 صبح
خسته نباشین وقتی روی دکمه ارسال کلیک میکنم تا اطلاعات سطرهای تیک خورده رو برام ذخیره کنه این ارورر و میده البته من ی لیست باکس ه م تو فرم گذاشتم که اطلاعات و بریزه داخل

()<List<DataGridViewRow> selected = new List<DataGridViewRow
(++for (int i = 0; i < dataGridView1.Rows.Count; i


( if (dataGridView1.Rows[i].Cells[3].Value == null ? false : (bool)dataGridView1.Rows[i].Cells[3].Value
{
([selected.Add(dataGridView1.Rows[i
(foreach (DataGridViewRow pp in selected
(listBox1.Items.Add(pp;