PDA

View Full Version : مبتدی: کارباdataGridview



nasimP
چهارشنبه 25 آبان 1390, 11:36 صبح
میخوام داخل فرمم یک گرید ویو و یگ دکمه قرار بدم.هر سطر گریدویو یک چک باکس داره که اگر تیکش زده شد و بعد دکمه فشرده شد،فرم دوباره لود بشه و سطرهایی که تیک شده بود حذف بشن.لطفا منوراهنمایی کنیدواگه میشه کد مربوطه رو برام بنویسید.خیلی دنبالش گشتم.:ناراحت:مرسی

solaleh
چهارشنبه 25 آبان 1390, 12:48 عصر
foreach(DataGridViewRow row in datagridview1.Rows)
{ if (row.Cells["chk"].Value.Equals(1))
{
//دستورات حذف سطرها
}
}

nasimP
چهارشنبه 25 آبان 1390, 13:23 عصر
خیلی ممنون از پاسخ شما.اما من دستور حذف این سطر های تیک خورده رو هم میخوام.

shahrzad87
چهارشنبه 25 آبان 1390, 13:37 عصر
datagridview1.Rows.Remove(row);

nasimP
چهارشنبه 25 آبان 1390, 13:40 عصر
اما این دستور که توی دیتابیسم اعمال نمیشه؟؟؟؟

solaleh
چهارشنبه 25 آبان 1390, 13:43 عصر
اگر قرار است سطرها تنها از DataGridView حذف شود:
dataGridview1.Rows.Remove(row);
و اگر قرار است از پایگاه داده هم حذف شوند، دستورات حذف از پایگاه داده را مینویسید.به عنوان مثال یک تابع حذف بنویسید و در جای موردنظر تابع را فراخوانی کنید:
Public void DelRows(int id)
{
SqlConnection conn = new SqlConnection("Connection_String");
Sqlcommand cmd = new Sqlcommand();
conn.Open();
cmd.Connection = conn;
cmd.CommandText = "Delete from Your_Table where YourIdField="+id;
cmd.ExecuteNonquery();
}

nasimP
چهارشنبه 25 آبان 1390, 14:00 عصر
خب من میخوام آیدی سطری که چک باکسش تیک خورده حذف بشه چطور اونو توی تابع ام اعمال کنم؟؟

solaleh
چهارشنبه 25 آبان 1390, 14:14 عصر
شما احتمالا نمیخواین اون id حذف بشه،میخواین سطری که اون id رو داره حذف بشه.وقتی گریدتون رو bind کردین باید یکی از ستون هاتون ستون unique تون باشه که از طریق اون بتونین به اطلاعات اون سطر دسترسی داشته باشین.توی دستور delete که بالا نوشتم YourIdField همون فیلد unique است.به تابع هم id سطر تیک خورده رو پاس میدین.اگه مشکلی بود بگین...

nasimP
چهارشنبه 25 آبان 1390, 14:21 عصر
اون ایدی هم میخوام حذف بشه.اما وقتی این کدهایی که گفتین رو اعمال کردم همه آیدی ها رو حذف می کنه

solaleh
چهارشنبه 25 آبان 1390, 14:29 عصر
شرط where رو برای دستور delete درست نوشتین؟اگر درسته کدتونو بذارین...

nasimP
پنج شنبه 26 آبان 1390, 08:36 صبح
if (row.Cells["chk"].Value.Equals(1))[CSHARP]
این کد رو توی دکمه اعمال میکنم اما ستون chk رو نمیشناسه

Mahmoud Zaad
پنج شنبه 26 آبان 1390, 08:49 صبح
سلام
شما باید اسم ستون خودتون رو به جای chk بنویسید یا اینکه شماره ایندکس ستون مورد نظر رو داخل براکت بنویسید

nasimP
پنج شنبه 26 آبان 1390, 08:58 صبح
نوشتم اما بازهم ارور میده که نام ستون رو پیدا نمیکنه

solaleh
پنج شنبه 26 آبان 1390, 09:38 صبح
if (row.Cells["chk"].Value.Equals(1))[CSHARP]
این کد رو توی دکمه اعمال میکنم اما ستون chk رو نمیشناسه



اون مثال من بود،شما باید جای chk اسم ستون یا اندیس ستونی که checkbox رو در اون قرار دادین بذارین.امتحان کنید...

nasimP
پنج شنبه 26 آبان 1390, 12:47 عصر
اسم ستونم همون chk هستش

solaleh
پنج شنبه 26 آبان 1390, 12:48 عصر
چه خطایی میده؟پرینت اسکرین خطا رو بذارین...