PDA

View Full Version : سوال: حذف تغییرات بعد از بستن فرم



sa_ostad
پنج شنبه 10 مرداد 1387, 23:39 عصر
برنامه من چند ات فرم داره که با SHOWDIALOG() نمایششون میدم و با CLOSE() میبندمشون
ولی دفعه بعد که نمایششون میدم تمام اطلاعات وارد شده دفعه قبل باقی مونده !
مثلا یه دیتاگرید دارم که در با لود فرم پر میشه ولی وقتی فرم رو میبندم و دوباره باز میکنم داده های قبلی هست و داده های جدید به آخرش اضافه شده !
باید از چه متدی استفاده کنم تا فرم بصورت کامل بسته بشه تا دفعه بعد که لود میشه همه کد ها از اول اجرا بشن و آثاری از تغییرات نمایش قبلی نباشه؟

amin3271
پنج شنبه 10 مرداد 1387, 23:47 عصر
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (dataset1.HasChanges())
{
dataset1.RejectChanges();
dataset1.Clear();
sqlDataAdapter1.Fill(dataset1);
}
}

فکر کنم این کد جواب بده

sa_ostad
جمعه 11 مرداد 1387, 13:38 عصر
کد ها رو وارد کردم ولی تفاوتی نکرد !
حالا چیکار کنم ؟

amin3271
جمعه 11 مرداد 1387, 13:55 عصر
مطمئنی که قبل از بستن فرم، dataset رو update نمی کنی . چون این کد زمانی کار می کنه که قبلش تغییرات dataset به روزرسانی نشده باشه.
البته تغییرات dataset باید قبل از هرکاری توسط دستور زیر (مثلا در دکمه save) ذخیره بشه


privatevoid btnsave_Click(object sender, EventArgs e)
{
this.BindingContext[dstelnet11, "tb_telnet"].EndCurrentEdit();
sqlDataAdapter1.Update(dstelnet11);
}

sa_ostad
جمعه 11 مرداد 1387, 14:02 عصر
این بسته به انتخاب کاربر داره که update بکنه یا نه ولی بدون update هم این مشکل هست.
اصلا تو تمام فرم هام هم این مشکل هست و باید با کد و تک تک همه تغییرات قبلی رو پاک کنم !

sohrabi11
جمعه 11 مرداد 1387, 15:48 عصر
ديتاگريدتون مگه با بانك ارتباط نداره؟ اگر ارتباط داشته باشه داده هاتون پاك نميشه مگر اينكه ركوردهاي بانكتون حذف بشه! بهتره دستوري رو كه در قسمت فرم لود وارد كردين رو اينجا بذارين!

sa_ostad
جمعه 11 مرداد 1387, 17:39 عصر
<code>
private void View_Load(object sender, EventArgs e)
{

objDataAdapter.SelectCommand = new SqlCommand();
objCommand.Connection = objConnection;
objCommand.CommandType = CommandType.Text;
objDataAdapter.SelectCommand = objCommand;
objDataAdapter.Fill(objDataSet, "Table");
objDataView = new DataView(objDataSet.Tables["Table"]);
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = objDataView;
SetHeaders(_strHeader);

}
<code/>
اینم محتویات فرم لود من !
ولی دوست عزیز فرم هایی که به هیچ دیتا بیسی وصل نیستن و مثلا فقط یه تکت باکس دارن هم اگه دفعه اول که لود میشن متنی توشون بنویسم و close کنم و دوباره showdialog کنم متنی که توی تکس باکس هست باقی مونده !

sa_ostad
جمعه 11 مرداد 1387, 22:04 عصر
لطفا راهنمایی کنید. من همچنان مشکل دارم !

man_iran
جمعه 11 مرداد 1387, 23:10 عصر
لطفا راهنمایی کنید. من همچنان مشکل دارم !

همون طور که دوستان گفتن شما باید دیتاست اون فرمتون را بعد از خروج خالی کنید.
این را می گم :
objDataSet

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


objDataSet.Clear();

sa_ostad
جمعه 11 مرداد 1387, 23:36 عصر
درست شد دوست عزیز .
ممنون از راهنماییتون.