mary3541
شنبه 23 خرداد 1388, 17:19 عصر
توی برنامم یه dgv دارم که درون آن اطلاعات دو جدول را نشان میدهد
جداول عبارتند از CurseTerm که دارای فیلدهای CourseTerm_ID و Course_ID_FK و Term_ID_FKو از جدول دوم که Course هست فیلد TitleEn در یلر نمایش داده میشوند.
حال میخواهم عمل Delete روی یک ردیف خاص انجام بدم
بر روی دکمه delete در قسمت کد، کد زیر رو نوشتم
{
ds = objcorter.connect();
this.dgv.DataSource = ds.Tables["CourseTerm"];
DataRowView drv = (DataRowView)this.BindingContext[ds.Tables["CourseTerm"]].Current;
DialogResult dr = MessageBox.Show("™آیا مطمئن هستید؟", "",
MessageBoxButtons.YesNo,
MessageBoxIcon.Warning,
MessageBoxDefaultButton.Button2);
if (dr == DialogResult.Yes)
{
objcorter.deletCourseTerm(drv);
}
}
کد DeletCourseTerm در لایه business عبارت است از
publicvoid deletCourseTerm(DataRowView drv)
{
objcorter.deletCourseTerm(drv);
}
و کد DeleteCourseTerm در قسمت DataLayer عبارت است از
publicvoid deletCourseTerm(DataRowView drv)
{
int rowid = (int)drv.Row["CourseTerm_ID"];
drv.Delete();
SqlCommand cmd = newSqlCommand("delete from CourseTerm where CourseTerm_ID=@CourseTerm_ID", con);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@CourseTerm_ID",CourseTerm_ID );
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
در لایه business هم کد connect
public DataSet connect()
{
DataSet ds = new DataSet();
ds = objcorter.connect();
return ds;
}
و کد connect در لایه data
public DataSet connect()
{
con = new SqlConnection("data source=.\\sqlexpress;attachdbfilename=|datadirecto ry|\\AcademySystem.mdf;integrated security=true; user instance=true");
SqlDataAdapter sda = new SqlDataAdapter("select CourseTerm.CourseTerm_ID, CourseTerm.Term_ID_Fk,CourseTerm.Session, Course.TitleEn ,CourseTerm.Course_ID_FK from CourseTerm inner join Course ON Course.Course_ID = CourseTerm.Course_ID_FK", con);
sda.SelectCommand.CommandType = CommandType.Text;
DataSet ds = new DataSet();
sda.Fill(ds, "CourseTerm");
return ds;
}
ولی هنگام حذف هر کدام از ردیفها رو انتخاب میکنم و دکمه delete رو میزنم فقط ردیف اول حذف میشه
میشه کمکم کنید
فوریه
جداول عبارتند از CurseTerm که دارای فیلدهای CourseTerm_ID و Course_ID_FK و Term_ID_FKو از جدول دوم که Course هست فیلد TitleEn در یلر نمایش داده میشوند.
حال میخواهم عمل Delete روی یک ردیف خاص انجام بدم
بر روی دکمه delete در قسمت کد، کد زیر رو نوشتم
{
ds = objcorter.connect();
this.dgv.DataSource = ds.Tables["CourseTerm"];
DataRowView drv = (DataRowView)this.BindingContext[ds.Tables["CourseTerm"]].Current;
DialogResult dr = MessageBox.Show("™آیا مطمئن هستید؟", "",
MessageBoxButtons.YesNo,
MessageBoxIcon.Warning,
MessageBoxDefaultButton.Button2);
if (dr == DialogResult.Yes)
{
objcorter.deletCourseTerm(drv);
}
}
کد DeletCourseTerm در لایه business عبارت است از
publicvoid deletCourseTerm(DataRowView drv)
{
objcorter.deletCourseTerm(drv);
}
و کد DeleteCourseTerm در قسمت DataLayer عبارت است از
publicvoid deletCourseTerm(DataRowView drv)
{
int rowid = (int)drv.Row["CourseTerm_ID"];
drv.Delete();
SqlCommand cmd = newSqlCommand("delete from CourseTerm where CourseTerm_ID=@CourseTerm_ID", con);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@CourseTerm_ID",CourseTerm_ID );
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
در لایه business هم کد connect
public DataSet connect()
{
DataSet ds = new DataSet();
ds = objcorter.connect();
return ds;
}
و کد connect در لایه data
public DataSet connect()
{
con = new SqlConnection("data source=.\\sqlexpress;attachdbfilename=|datadirecto ry|\\AcademySystem.mdf;integrated security=true; user instance=true");
SqlDataAdapter sda = new SqlDataAdapter("select CourseTerm.CourseTerm_ID, CourseTerm.Term_ID_Fk,CourseTerm.Session, Course.TitleEn ,CourseTerm.Course_ID_FK from CourseTerm inner join Course ON Course.Course_ID = CourseTerm.Course_ID_FK", con);
sda.SelectCommand.CommandType = CommandType.Text;
DataSet ds = new DataSet();
sda.Fill(ds, "CourseTerm");
return ds;
}
ولی هنگام حذف هر کدام از ردیفها رو انتخاب میکنم و دکمه delete رو میزنم فقط ردیف اول حذف میشه
میشه کمکم کنید
فوریه