PDA

View Full Version : سوال: نحوه حذف ستون در دیتا گرید ویو



saman95
چهارشنبه 14 مهر 1389, 18:23 عصر
با عرض سلام
می خواستم ببینم چطوری میشه یکی از ستونهای دیتا گرید ویو رو از طریق موس در برنامه انتخاب کرد و بعد از طریق یک باتن حذفش کرد اگه ممکنه کدش رو طوری بنویسد که اول از طریق یه مسج باکس بپرسه بعد حذفش کنه
راستی یادم رفت بگم که تازه کارم واگه ممکنه کدش رو برام بنویسید

صباح فتحی
چهارشنبه 14 مهر 1389, 19:52 عصر
سلام اقاسامان
حتما توی gridview یه کدی داره درسته؟
خب اینو بنویس

private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{

mon = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();

}
Cell[0] همون اولین ستون هست که اونو انتخاب کردی(به رویداد توجه کن)
بعد اون متغیری که حاوی اون کدهست رو توی کویری حذف
بزار

saman95
چهارشنبه 14 مهر 1389, 20:19 عصر
بعد اون متغیری که حاوی اون کدهست رو توی کویری حذف
بزار
چطوری برابر با حذفش بزارم

صباح فتحی
چهارشنبه 14 مهر 1389, 20:23 عصر
چطوری برابر با حذفش بزارم
یه نمونه

.command.CommandText = "Delete From tbl_fouropque where codesoal=" + dcd.Text;

mmd2009
چهارشنبه 14 مهر 1389, 20:24 عصر
با سلام

با کد زیر امتحان کن البته اگر منظورت این بود که چطوری یک ستون رو حذف بکنه نه یک رکورد رو. اونم چی تو دیتابیس



private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
{
if (MessageBox.Show("ایا حذف شود؟", "توجه", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
dataGridView1.Columns.RemoveAt(dataGridView1.Curre ntCell.ColumnIndex);
}
}

صباح فتحی
چهارشنبه 14 مهر 1389, 20:27 عصر
بله کد مجتبی جان درسته اما فقط ازگریید ویو حذف میکنه اگه میخای در دیتابیس هم حذف شه اون کویری روباید به کارببری

saman95
چهارشنبه 14 مهر 1389, 20:37 عصر
یه نمونه

.command.CommandText = "Delete From tbl_fouropque where codesoal=" + dcd.Text;
صباح جان این کد رو متوجه نشدم
نفهمیدم کجا بنویسم
کد اولت منظور این بود که توی رویداد گرید ویو بنویسم اگه روی هر یک از ستونهای گرید ویو کلیک شد آدرس اون ستون رو بریزه توسی یه متغییری به اسم mon بعد اون متغییر رو پاکش کنم
ولی توی این کدت خبری از اون متغییر نیست
این کد دوستمون هم که بگفته شما فقط از گریدویو پاک میکنه نه از پایگاه داده

صباح فتحی
چهارشنبه 14 مهر 1389, 20:44 عصر
صباح جان این کد رو متوجه نشدم
نفهمیدم کجا بنویسم
کد اولت منظور این بود که توی رویداد گرید ویو بنویسم اگه روی هر یک از ستونهای گرید ویو کلیک شد آدرس اون ستون رو بریزه توسی یه متغییری به اسم mon بعد اون متغییر رو پاکش کنم
ولی توی این کدت خبری از اون متغییر نیست
این کد دوستمون هم که بگفته شما فقط از گریدویو پاک میکنه نه از پایگاه داده
از اون دیتاگرید یه عکس بگیر(وقتی که پره)تا کدرو واست بنویسم

saman95
چهارشنبه 14 مهر 1389, 20:57 عصر
http://www.irupload.ir/images/tr1ze05s8ytm4ic8gdi.jpg

صباح فتحی
چهارشنبه 14 مهر 1389, 21:08 عصر
اینم از این:

private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
id_delete = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();


}

private void button2_Click(object sender, EventArgs e)
{
DialogResult dl = MessageBox.Show("Delete?", "", MessageBoxButtons.YesNo);
if (dl==DialogResult.Yes)
{
OleDbConnection c1 = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\db.accdb");
OleDbCommand cm = new OleDbCommand();
cm.Connection = c1;
c1.Open();
cm.CommandText = "DELETE FROM tb where id=@id ";
cm.Parameters.AddWithValue("@id",id_delete );
cm.ExecuteNonQuery();
c1.Close();
}

}

saman95
چهارشنبه 14 مهر 1389, 21:27 عصر
DialogResult dl = MessageBox.Show("Delete?", "", MessageBoxButtons.YesNo);
if (dl == DialogResult.Yes)
{
OleDbConnection cn = new OleDbConnection("PROVIDER =MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" + Application.StartupPath + "\\paygah.mdb");
OleDbCommand cm = new OleDbCommand();
cm.Connection = cn;
cn.Open();
cm.CommandText = "DELETE FROM tb where kod=@kod ";
cm.Parameters.AddWithValue("@kod", id_delete);
cm.ExecuteNonQuery();
cn.Close();
}

کدها رو به این صورت تغییر دادم ولی بازهم از این خط ارور میگیره
cm.ExecuteNonQuery();

صباح فتحی
چهارشنبه 14 مهر 1389, 21:29 عصر
برنامه رو trace کن ببین kodمیره توی متغییر id_delete
از ارور هم عکس بگیر

صباح فتحی
چهارشنبه 14 مهر 1389, 21:37 عصر
DialogResult dl = MessageBox.Show("Delete?", "", MessageBoxButtons.YesNo);
if (dl == DialogResult.Yes)
{
OleDbConnection cn = new OleDbConnection("PROVIDER =MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" + Application.StartupPath + "\\paygah.mdb");
OleDbCommand cm = new OleDbCommand();
cm.Connection = cn;
cn.Open();
cm.CommandText = "DELETE FROM tb where kod=@kod ";
cm.Parameters.AddWithValue("@kod", id_delete);
cm.ExecuteNonQuery();
cn.Close();
}
کدها رو به این صورت تغییر دادم ولی بازهم از این خط ارور میگیره
cm.ExecuteNonQuery();
مردحسابی اسم جدول رو عوض کن دیگه:لبخند:

saman95
چهارشنبه 14 مهر 1389, 21:44 عصر
اسم جدول رو درست کردم
حالا دیگه خطا نمی گیره ولی چیزی هم پاک نمی کنه

صباح فتحی
چهارشنبه 14 مهر 1389, 21:45 عصر
اسم جدول رو درست کردم
حالا دیگه خطا نمی گیره ولی چیزی هم پاک نمی کنه
باید پاک کنه کد حذف گرید ویو هم بعدش بنویس

dataGridView1.Rows.RemoveAt(dataGridView1.CurrentC ell.RowIndex);

saman95
چهارشنبه 14 مهر 1389, 21:48 عصر
صباح جان این دوتا خط واسه چیند ؟


cm.CommandText = "DELETE FROM gheibat where kod=@kod ";
cm.Parameters.AddWithValue("@kod", id_delete);

saman95
چهارشنبه 14 مهر 1389, 21:51 عصر
اضاف کردم ولی فقط از گرید ویو پاک میکنه

mmd2009
چهارشنبه 14 مهر 1389, 21:54 عصر
دوست عزیز خب همون برنامت رو بذار تا درستش بکنن دوستان.

صباح فتحی
چهارشنبه 14 مهر 1389, 21:55 عصر
صباح جان این دوتا خط واسه چیند ؟


cm.CommandText = "DELETE FROM gheibat where kod=@kod ";
cm.Parameters.AddWithValue("@kod", id_delete);

خط اول یک دستور اس کیو اال هست
میگه ردیفی رو که کدش برار اون پارامتری که فرستادیم باشه رو پاک کن
id_delet
هم اون کد سطری هست که ما روش کلیک کردیم
باید رو اون فلش کلیک کنی

mmd2009
چهارشنبه 14 مهر 1389, 21:55 عصر
صباح جان این دوتا خط واسه چیند ؟


cm.CommandText = "DELETE FROM gheibat where kod=@kod ";
cm.Parameters.AddWithValue("@kod", id_delete);


ای دوتا خط هم یعنی اینکه شما یک کوئری دارید تعریف میکنید که میخواد یک مقداری رو از جدول مربوطه حذف بکنه.

@kod هم که میگه بوسیله یک پارامتر مقدار معرفی میشه.

saman95
چهارشنبه 14 مهر 1389, 22:05 عصر
{
DialogResult dl = MessageBox.Show("Delete?", "", MessageBoxButtons.YesNo);
if (dl == DialogResult.Yes)
{
OleDbConnection cn = new OleDbConnection("PROVIDER =MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" + Application.StartupPath + "\\paygah.mdb");
OleDbCommand cm = new OleDbCommand();
cm.Connection = cn;
cn.Open();
cm.CommandText = "DELETE FROM gheibat where kod=@kod ";
dataGridView1.Rows.RemoveAt(dataGridView1.CurrentC ell.RowIndex);
cm.Parameters.AddWithValue("@kod", id_delete);
cm.ExecuteNonQuery();
cn.Close();
}
}

این کدی که الان من دارم ازش استفاده می کنم

@kod
اسم فیلد کلیدی منه که توی جدول دارم استفاده می کنم
نمی دونم چرا یه چیزی درست در نمیاد


دوست عزیز خب همون برنامت رو بذار تا درستش بکنن دوستان.

متاسفانه آخرین مهلت تحویل پروژه ام تا فردا صبحه
من هم دارم با دیال آپ وصل میشم اگه میشد که خوب بود


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

صباح فتحی
چهارشنبه 14 مهر 1389, 22:08 عصر
کد گریید ویو رو نوشتی ؟؟متغیر بصورت پابلیک هست؟
اون صفحه ای که کدت هست یه عکس بگیر یا از ارور عکس بگیر

saman95
چهارشنبه 14 مهر 1389, 22:18 عصر
کد گریید ویو رو نوشتی ؟؟متغیر بصورت پابلیک هست؟
آره هر دوتا کار رو انجام دادم کد رو هم که کامل گذاشتم


public string id_delete;

صباح فتحی
چهارشنبه 14 مهر 1389, 22:20 عصر
اون تیکش بود
cell[0]
اونو تغییربده شاید ستونش فرق کنه.تعجبه حذف نمیکنه.اروری چیزیی نمیده؟

saman95
چهارشنبه 14 مهر 1389, 22:42 عصر
cell[0]

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

صباح فتحی
چهارشنبه 14 مهر 1389, 22:44 عصر
دستت درد نکنه دقیقآ خودش بود
وقتی یکش کردم درست شد
الان داره حذف میکنه
ممنون
فدات اقا جان ...