PDA

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



amir-aa
یک شنبه 09 مرداد 1390, 12:18 عصر
با سلام من می خوام توی گرید یک سطر رو انتخاب کنم و بعد دکمه رو که بزنم از دیتابیس حذف شه.
اینم کدی که نوشتم:



using (SqlConnection Conn = new SqlConnection("Data Source= 'AHMADABA-EFFB60';Initial Catalog=maryam;Integrated Security=True"))
{
SqlCommand delcmd = new SqlCommand();
int i = 0;

for (i = 0; i < dataGridView1.Rows.Count; i++)
{
DataGridViewRow delrow = dataGridView1.Rows[i];
if (delrow.Selected == true)
{
dataGridView1.Rows.RemoveAt(i);
try
{
delcmd.CommandText= "DELETE FROM masoolat WHERE id=" + i + "";
Conn.Open(); //ADDED
delcmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}



خواهشا زود تر یه جوابی بهم بدید.
ممنون

BehinAfzar
یک شنبه 09 مرداد 1390, 12:30 عصر
سلام

if (dataGridView1.Rows.Count > 1 && dataGridView1.SelectedRows[0].Index != dataGridView1.Rows.Count - 1)
{
delcmd.CommandText = "DELETE FROM masoolat WHERE id=" + dataGridView1.SelectedRows[0].Cells[0].Value.ToString() + "";
Conn.Open(); //ADDED
delcmd.ExecuteNonQuery();
Conn.Close();
dataGridView1.Rows.RemoveAt(dataGridView1.Selected Rows[0].Index);
}


با در نظر گرفتن اینکه کد رکورد مورن نظر در فیلد اول دیتا گرید باشه
موفق باشی

hanis29268
یک شنبه 09 مرداد 1390, 15:47 عصر
سلام
من نمیتونم حذف کنم میشه چک کنید؟؟؟
اینم کدم هستش:

SqlConnection Conn = new SqlConnection(@"server=.\Mssql2008;database=Basij;integrated security=true;");
SqlCommand delcmd = new SqlCommand();
if (dataGridView1.Rows.Count > 1 )
{
delcmd.CommandText = "DELETE FROM Tblregister WHERE Fldcode=" + dataGridView1.SelectedRows[0].Cells[0].Value.ToString() + "";
Conn.Open(); //ADDED
delcmd.ExecuteNonQuery();
Conn.Close();
dataGridView1.Rows.RemoveAt(dataGridView1.Selected Rows[0].Index);
}
این ارور رو میده
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

BehinAfzar
یک شنبه 09 مرداد 1390, 19:16 عصر
سلام
من نمیتونم حذف کنم میشه چک کنید؟؟؟
اینم کدم هستش:

SqlConnection Conn = new SqlConnection(@"server=.\Mssql2008;database=Basij;integrated security=true;");
SqlCommand delcmd = new SqlCommand();
if (dataGridView1.Rows.Count > 1 )
{
delcmd.CommandText = "DELETE FROM Tblregister WHERE Fldcode=" + dataGridView1.SelectedRows[0].Cells[0].Value.ToString() + "";
Conn.Open(); //ADDED
delcmd.ExecuteNonQuery();
Conn.Close();
dataGridView1.Rows.RemoveAt(dataGridView1.Selected Rows[0].Index);
}
این ارور رو میده
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

سلام
شما میتونین از کدی که بالا گذاشتم استفاده کنین
اون کد ابتدا چک میکنه که آیا رکوردی انتخاب شده یانه و همچنین آخرین رکورد در حال انتخاب نباشه !
سپس از درون بانک پاک میکنه و بعد از داخل دیتابیس پاک میکنه
این کد مشکلی نداره
موفق باشی

hanis29268
دوشنبه 10 مرداد 1390, 00:44 صبح
بازم نشد
ببینید من یک button دارم و یک dgv که به بانکم متصل شده
اولین رکوردمم Fldcode هستش

private void button1_Click(object sender, EventArgs e)
{
SqlConnection Conn = new SqlConnection(@"server=.\Mssql2008;database=Basij;integrated security=true;");
SqlCommand delcmd = new SqlCommand();
if (dataGridView1.Rows.Count > 1 && dataGridView1.SelectedRows[0].Index != dataGridView1.Rows.Count - 1)
{
delcmd.CommandText = "DELETE FROM Tblregister WHERE Fldcode=" + dataGridView1.SelectedRows[0].Cells[0].Value.ToString() + "";
Conn.Open();
delcmd.ExecuteNonQuery();
Conn.Close();
dataGridView1.Rows.RemoveAt(dataGridView1.Selected Rows[0].Index);
}
}
وقتی کد بالارو ر رو میزنم این پیغام رو میده
ExecuteNonQuery: Connection property has not been initialized.

hanis29268
دوشنبه 10 مرداد 1390, 00:45 صبح
بازم نشد
ببینید من یک button دارم و یک dgv که به بانکم متصل شده
اولین فیلد جدولم Fldcode هستش
کلید اصلی هم نیست

private void button1_Click(object sender, EventArgs e)
{
SqlConnection Conn = new SqlConnection(@"server=.\Mssql2008;database=Basij;integrated security=true;");
SqlCommand delcmd = new SqlCommand();
if (dataGridView1.Rows.Count > 1 && dataGridView1.SelectedRows[0].Index != dataGridView1.Rows.Count - 1)
{
delcmd.CommandText = "DELETE FROM Tblregister WHERE Fldcode=" + dataGridView1.SelectedRows[0].Cells[0].Value.ToString() + "";
Conn.Open();
delcmd.ExecuteNonQuery();
Conn.Close();
dataGridView1.Rows.RemoveAt(dataGridView1.Selected Rows[0].Index);
}
}
وقتی کد بالارو ر رو میزنم این پیغام رو میده
ExecuteNonQuery: Connection property has not been initialized.

hanis29268
دوشنبه 10 مرداد 1390, 02:33 صبح
دوستان کسی نیست که جوابی بده؟؟؟؟؟؟؟؟؟؟؟
اگر هم یک نمونه برنامه بزارید منون میشم

mmd2009
دوشنبه 10 مرداد 1390, 03:05 صبح
با سلام

ببینید همونطور از خطایی که برنامتون داره مشخصه که cmd شما initialized نشده و اصلا این cmd نمیدونه روی کدوم بانک باید کوئری رو اجرا بکنه

کد زیر خطای بالا رو برطرف میکنه :


private void button1_Click(object sender, EventArgs e)
{
SqlConnection Conn = new SqlConnection(@"server=.\Mssql2008;database=Basij; integrated security=true;");
SqlCommand delcmd = new SqlCommand();
if (dataGridView1.Rows.Count > 1 && dataGridView1.SelectedRows[0].Index != dataGridView1.Rows.Count - 1)
{
delcmd.CommandText = "DELETE FROM Tblregister WHERE Fldcode=" + dataGridView1.SelectedRows[0].Cells[0].Value.ToString() + "";
delcmd.Connection = Conn;//کدی که فراموش کردید بنوسید
Conn.Open();
delcmd.ExecuteNonQuery();
Conn.Close();
dataGridView1.Rows.RemoveAt(dataGridView1.Selected Rows[0].Index);
}
}


موفق باشید

hanis29268
دوشنبه 10 مرداد 1390, 03:26 صبح
اگر بخوام کد رو از یک textbox بگیرم و بعد حذفش کنم چی؟؟؟؟؟
ممنون

mmd2009
دوشنبه 10 مرداد 1390, 17:32 عصر
به جای کد زیر :


dataGridView1.SelectedRows[0].Cells[0].Value.ToString()


بنوسید :



TextBox.Text