PDA

View Full Version : حذف چند رکورد انتخابی از DataGridView



hrbaban
سه شنبه 20 مرداد 1388, 15:13 عصر
سلام . . .

چطوری میشه بعد از نمایش اطلاعات در DataGridView یه checkBox کنار هر رکورد گذاشت تا بتونیم با انتخاب هر کدوم از رکوردها و زدن دکمه حذف اطلاعات رو پاک کرد ؟

Mohsen229266
سه شنبه 20 مرداد 1388, 15:52 عصر
سلام


private void AddOutOfOfficeColumn()
{
DataGridViewCheckBoxColumn column = new DataGridViewCheckBoxColumn();
{
column.HeaderText = ColumnName.OutOfOffice.ToString();
column.Name = ColumnName.OutOfOffice.ToString();
column.AutoSizeMode =
DataGridViewAutoSizeColumnMode.DisplayedCells;
column.FlatStyle = FlatStyle.Standard;
column.ThreeState = true;
column.CellTemplate = new DataGridViewCheckBoxCell();
column.CellTemplate.Style.BackColor = Color.Beige;
}
DataGridView1.Columns.Insert(0, column);
}

برای حذف هم چکباکسهارو چک کن هر کدوم تیک داشت با RemoveAtحذفش کن

hrbaban
سه شنبه 20 مرداد 1388, 17:07 عصر
سلام


private void AddOutOfOfficeColumn()
{
DataGridViewCheckBoxColumn column = new DataGridViewCheckBoxColumn();
{
column.HeaderText = ColumnName.OutOfOffice.ToString();
column.Name = ColumnName.OutOfOffice.ToString();
column.AutoSizeMode =
DataGridViewAutoSizeColumnMode.DisplayedCells;
column.FlatStyle = FlatStyle.Standard;
column.ThreeState = true;
column.CellTemplate = new DataGridViewCheckBoxCell();
column.CellTemplate.Style.BackColor = Color.Beige;
}
DataGridView1.Columns.Insert(0, column);
}
برای حذف هم چکباکسهارو چک کن هر کدوم تیک داشت با RemoveAtحذفش کن



من اینطوری نمی فهمم چی شده .
میشه لطف کنی یه برنامه کوچیک بنویسی و فایلش رو آپلود کنی .

چطوری این چک باکسها رو چک کنم ؟


مرسی

Mohsen229266
سه شنبه 20 مرداد 1388, 17:41 عصر
دوست من شما دیتاگریدتو از طریق DataSource به دیتابیست bind کردید یا نه؟ببین این DLL دیتاگرید (http://barnamenevis.org/forum/showpost.php?p=763850&postcount=303)کارتو راه میندازه

hrbaban
سه شنبه 20 مرداد 1388, 18:21 عصر
ممنونم که کمک میکنید.

بله بایند شده .
راستش من میخوام بدونم کدشو چجوری مینویسند .
اگر کد DLL ای که دادی رو بزاری که عالی میشه .
در واقع من میخوام با انتخاب چک باکسها و زدن دکمه del در برنامه رکوردهای انتخابی رو از بانک اطلاعاتی پاک کنم .

Mohsen229266
سه شنبه 20 مرداد 1388, 19:03 عصر
از این کد برای Button استفاده کن اگه اگه حل نشد بگو برات یه برنامه بزارم



private void dataGridViewSpesific1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (dataGridViewSpesific1.SelectedRows.Count == 0)
{
if (dataGridViewSpesific1.RowCount != 0)
{
if (dataGridViewSpesific1.Columns[e.ColumnIndex].Name == "delete" && dataGridViewSpesific1.Columns[e.ColumnIndex].GetType().Name == "DataGridViewButtonColumn")
{
if (dataGridViewSpesific1.AllowUserToAddRows == true && dataGridViewSpesific1.CurrentRow.Index != dataGridViewSpesific1.Rows.Count - 1)
dataGridViewSpesific1.Rows.RemoveAt(dataGridViewSp esific1.CurrentRow.Index);
else if (dataGridViewSpesific1.AllowUserToAddRows == false)
{
Remove1F3();
}

}
}
}
}

hrbaban
سه شنبه 20 مرداد 1388, 19:13 عصر
بازم ممنونم ... اما فکر کنم اگر زحمت بکشی یه برنامه کوچولو آپلود کنی که هم حالت دکمه و هم حالت چک باکس داشته باشه بهتره .
من که تا آخر عمر دعات میکنم .
از صبح تا حالا هرچی گشتم به نتیجه خوبی نرسیدم .

مرسی .

Mohsen229266
سه شنبه 20 مرداد 1388, 19:36 عصر
چشم براتون یه برنامه ضمیمه میکنم ولی وقتی از دکمه حذف استفاده میکنید دیگه checkbox معنی نداره چون برای هر رکورد یک دکمه حذف وجود داره

saed2006
سه شنبه 20 مرداد 1388, 19:50 عصر
حب چک میکنی اگر اون ستون خاص true بود عمل حذف رو مستقیما توی دیتا بیس اعمال کنی

Mohsen229266
چهارشنبه 21 مرداد 1388, 09:45 صبح
اینم یه نمونه برنامه برای اضافه کردن CheckBox و حذف البته حذف از dbشو خودت بنویس

hrbaban
چهارشنبه 21 مرداد 1388, 20:13 عصر
Mohsen229266 (http://barnamenevis.org/forum/member.php?u=43325) بابت برنامه خيلي ممنونم اما يه نكته . . .
توي برنامه فوق يه مشكلي وجود داره و اون اينه كه وقتي ميخواهي چندتا ركورد پشت سر هم را پاك كني datagridview با حذف هر مورد آپديت ميشه و چند مورد از ركوردها حذف نميشن .

بايد چيكار كرد ؟

javad_64
پنج شنبه 22 مرداد 1388, 00:09 صبح
Mohsen229266 (http://barnamenevis.org/forum/member.php?u=43325) بابت برنامه خيلي ممنونم اما يه نكته . . .
توي برنامه فوق يه مشكلي وجود داره و اون اينه كه وقتي ميخواهي چندتا ركورد پشت سر هم را پاك كني datagridview با حذف هر مورد آپديت ميشه و چند مورد از ركوردها حذف نميشن .

بايد چيكار كرد ؟
در رویداد button1_click بجای کد زیر


for (int i = 0; i < dataGridView1.RowCount; i++)
از کد زیر استفاده کن

for(int i=dataGridView1.RowCount-1;i>=0:i--)

hrbaban
پنج شنبه 22 مرداد 1388, 02:05 صبح
javad_64 (http://barnamenevis.org/forum/member.php?u=92755) ممنونم از کمکتون. اون مشکل حل شد . . .

اما یه مشکل دیگه و اونم اینه که وقتی یک چکس باکس را انتخاب میکنی و بعدا از انتخاب درش میاری و سپس دکمه حذف رو میزنی اون رکورد حذف میشه . فکر کنم تو شرطش باید به جای null یه چیز دیگه نوشت اما من هر چی مقدار گذاشتم بازم نشد .
چیکار باید کرد ؟

Mohsen229266
پنج شنبه 22 مرداد 1388, 10:04 صبح
سلام ببخشید شما شرط زیر رو به شرط اول اضافه کنید


if (dataGridView1[dataGridView1.ColumnCount - 1, i].Value.ToString().ToLower()=="true")

javad_64
پنج شنبه 22 مرداد 1388, 10:34 صبح
javad_64 (http://barnamenevis.org/forum/member.php?u=92755) ممنونم از کمکتون. اون مشکل حل شد . . .

اما یه مشکل دیگه و اونم اینه که وقتی یک چکس باکس را انتخاب میکنی و بعدا از انتخاب درش میاری و سپس دکمه حذف رو میزنی اون رکورد حذف میشه . فکر کنم تو شرطش باید به جای null یه چیز دیگه نوشت اما من هر چی مقدار گذاشتم بازم نشد .
چیکار باید کرد ؟
بیا دوست عزیز اینم با چند تا تغییر درست شد

hrbaban
پنج شنبه 22 مرداد 1388, 11:47 صبح
آقا حل شد :بوس:
خیلی مرسی ، از همه ممنونم .

میشه آقا محسن اون برنامه که با دکمه میشد حذف و اضافه کرد رو بگی چیکار کنیم . اونم باحال بود .

Mohsen229266
پنج شنبه 22 مرداد 1388, 17:58 عصر
شما دارید یه کامپوننت طراحی میکنید؟
کد کامپوننتو بزارم یا فقط button رو منظورتونه

hrbaban
پنج شنبه 22 مرداد 1388, 19:39 عصر
نه ، کامپوننت نمی نویسم .
اگر کد کامپوننت رو بذاری که چه بهتر .
بیشتر من میخوام بدونم ساختارش چجوریه .

Mohsen229266
پنج شنبه 22 مرداد 1388, 20:07 عصر
دوست من اینم کد برای کامپوننتم که اگه بخواید با نحوه ارث بری از کامپوننت های دات نت آشنا بشید بهتره این برنامه (http://barnamenevis.org/forum/showpost.php?p=765259&postcount=308)رو که در مورد دیتاگرید ویو هستو ببینید


private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1.SelectedRows.Count == 0)
{
if (dataGridView1.RowCount != 0)
if (dataGridView1.Columns[e.ColumnIndex].Name == "delete" && dataGridView1.Columns[e.ColumnIndex].GetType().Name == "DataGridViewButtonColumn")
{
if (dataGridView1.AllowUserToAddRows == true && dataGridView1.CurrentRow.Index != dataGridView1.Rows.Count - 1)
dataGridView1.Rows.RemoveAt(dataGridView1.CurrentR ow.Index);
else if ((dataGridView1.AllowUserToAddRows == false) && (dataGridView1.CurrentRow.Index != dataGridView1.Rows.Count - 1))
{
this.Rows.RemoveAt(dataGridView1.CurrentRow.Index) ;
}
else if (dataGridView1.CurrentRow.Index == dataGridView1.Rows.Count - 1)
{
dataGridView1.Rows.Add();
dataGridView1.CurrentCell = dataGridView1[0, dataGridView1.CurrentRow.Index];
}
}
}
}

faezeh.krm
یک شنبه 25 مرداد 1388, 08:37 صبح
سلام
چطوری میتونم بفهمم یک ستون خاص که به صورت چک باکس تعریف کردم انتخاب شده؟
از دستور زیر استفاده کردم ولی جواب نگرفتم لطفا اگر میتونید کمک کنید

dataGridView[columnIndex,RowIndex].Selected

Mohsen229266
یک شنبه 25 مرداد 1388, 12:01 عصر
دوست عزیز در همین تایپیک این جواب داده شده البته راه بهتری هم وجود داره


if (!(dataGridView1[0, 0].Value == null))
if (dataGridView1[0, 0].Value.ToString().ToLower()=="true")