PDA

View Full Version : عدم بروز رسانی دیتاگرید ویو



samaram
شنبه 12 دی 1388, 23:56 عصر
سلام. من یه گراید ویو در برنامه ام دارم که با کلیک روی دکمه ی حذف که در روی فرم قرار داره قراره سطر جاری حذف بشه. و سپس گراید ویو آپدیت بشه و سطر حذف شده رو دیگه نشون نده. اما مشکلم اونجاست که حذف به درستی انجام میشه اما گراید ویو بروز رسانی نمیشه. این کد دکمه حذف منه. ببینید:


DataSet ds = new DataSet();
SqlDataAdapter objDataAdapter = new SqlDataAdapter("Select name , sh From TB_customer where name Like N'" + textBox1.Text + "%'", con);
objDataAdapter.Fill(ds, "TB_customer");
DialogResult code;
code = MessageBox.Show(" ", "", MessageBoxButtons.YesNo);
if (code == DialogResult.Yes)
{
DataRowView drv = (DataRowView)this.BindingContext[ds.Tables["TB_customer"]].Current;
int id = (int)drv.Row["sh"];
drv.Delete();
SqlCommand cmd = new SqlCommand("delete from TB_customer where sh=@id", con);
cmd.Parameters.AddWithValue("@id", id);
con.Open();
cmd.ExecuteNonQuery();
con.Close();

}

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

hakelberfin
یک شنبه 13 دی 1388, 00:19 صبح
سلام
شما در برنامه تون از دو تابع استفاده کنید.
تابع اول وظیفه اش پر کردن dataGrid باشه
تابع دوم هم عمل حذف رو انجام بده .
در تابع دوم بعد عمل حذف تابع اول رو فراخانی کن.
اگه برات نامفهومه کدش رو بفرستم

FastCode
یک شنبه 13 دی 1388, 00:36 صبح
drv.Row.Delete();
TB_CustomerTableAdapter.Update(drv.Row);

samaram
دوشنبه 14 دی 1388, 13:27 عصر
سلام
شما در برنامه تون از دو تابع استفاده کنید.
تابع اول وظیفه اش پر کردن dataGrid باشه
تابع دوم هم عمل حذف رو انجام بده .
در تابع دوم بعد عمل حذف تابع اول رو فراخانی کن.
اگه برات نامفهومه کدش رو بفرستم
از مهربوني و بزرگواريتون ممنون. بله. اگه ميشه زحمتشو بكشيد.

slashslash2009
دوشنبه 14 دی 1388, 14:18 عصر
دوست من خیلی کارها میشه انجام داد مثلا بعد از اینکه یک رکورد یا سطر را حذف کردی بعدش دوباره گریدویو رو پر کنیش

samaram
دوشنبه 14 دی 1388, 19:30 عصر
دوست من خیلی کارها میشه انجام داد مثلا بعد از اینکه یک رکورد یا سطر را حذف کردی بعدش دوباره گریدویو رو پر کنیش
هرکار کردم نشد. آخه نحوه ی پر کردن گراید ویوم به این شکله. به رویداد textchange کامبوبوکسم دقت کنید: من کل کدم رو می ذارم:


public partial class FrmSearchName : Form
{
SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=Tanin;Integrated Security=True");
SqlDataAdapter objda = new SqlDataAdapter();
DataSet objds = new DataSet();
public FrmSearchName()
{
InitializeComponent();
}
private void FrmSearchName_Load(object sender, EventArgs e)
{

}
private void textBox1_TextChanged(object sender, EventArgs e)
{
DataSet ds = new DataSet();
SqlDataAdapter objDataAdapter = new SqlDataAdapter("Select name , sh From TB_customer where name Like N'" + textBox1.Text + "%'", con);
objDataAdapter.Fill(ds, "TB_customer");
DataTable dt = new DataTable();
dt = ds.Tables["TB_customer"];
dt.DefaultView.RowFilter = "name like'%" + textBox1.Text + "%'";
if (dt.DefaultView.Count == 0)
MessageBox.Show("!" + " ");
dataGridView1.DataSource = dt.DefaultView;
dt = null;

}
private void button2_Click(object sender, EventArgs e)
{

DataSet ds = new DataSet();
SqlDataAdapter objDataAdapter = new SqlDataAdapter("Select name , sh From TB_customer where name Like N'" + textBox1.Text + "%'", con);
objDataAdapter.Fill(ds, "TB_customer");
DialogResult code;
code = MessageBox.Show(" ", "", MessageBoxButtons.YesNo);
if (code == DialogResult.Yes)
{
DataRowView drv = (DataRowView)this.BindingContext[ds.Tables["TB_customer"]].Current;
int id = (int)drv.Row["sh"];
drv.Delete();
SqlCommand cmd = new SqlCommand("delete from TB_customer where sh=@id", con);
cmd.Parameters.AddWithValue("@id", id);
con.Open();
cmd.ExecuteNonQuery();
con.Close();

}
}


در ضمن اون دو خط کدی که FastCode عزیز داد هم خطا داد و هرکارش کردم حل نشد.

slashslash2009
دوشنبه 14 دی 1388, 20:43 عصر
شما باید بعد از دستور delete عمل select انجام بدین در ضمن واسه اینکه بدونید چه سطری از گریدویو انتخاب شده و بخواید همون سطرو حذف کنید از این راه هم میتونید استفاده کنید :

("Delete from table1 where id='" + dataGridView1.CurrentRow.Cells[2].Value.tostring() + "'");

group45
دوشنبه 14 دی 1388, 22:07 عصر
سلام
به بخش زیر برو شاید کمکت کرد

http://barnamenevis.org/forum/showthread.php?t=198045

dr_ghezavat
سه شنبه 15 دی 1388, 06:10 صبح
پس چرا اون آخر فیل نکردی؟

group45
سه شنبه 15 دی 1388, 07:10 صبح
اگه با منی تو تابع لود فیل کردم