View Full Version : حفظ داده در data table
ordebehesht
جمعه 03 آبان 1392, 13:02 عصر
با سلا من میخوام وقتی از dataset داده ها رو وارد datatable کردم بعد ds رو خالی کردم داده هام تو dt بمونه
mmd2009
جمعه 03 آبان 1392, 15:56 عصر
با سلام
شما برای این کار باید داده ها رو Copy کنید ، چون در غیراینصورت جدول شما در دیتاست ارجاع میشه به دیتاتیل و هر کاری روی جدول بکنید روی اون یکی هم اعمال میشه.
مثل همچین حالتی :
var table1 = new DataTable("users");
table1.Columns.Add("name");
table1.Columns.Add("id");
table1.Rows.Add("sam", 1);
table1.Rows.Add("mark", 2);
var set = new DataSet("Database");
set.Tables.Add(table1);
DataTable testTable = set.Tables[0];
testTable.Rows.Add("mark", 3);
Console.WriteLine(set.Tables[0].Rows.Count);//output : 3
Console.WriteLine(testTable.Rows.Count);//output : 3
برای رفع این مشکل شما میتونید از دو متد دیتاست استفاده کنید یعنی متدهای DataSet.Copy و DataSet.Clone
که تفاوت این دو بدین شکل هست :
در DataSet.Clone فقط ساختار جدول دیتاست به جدول دیگه کپی میشه یعنی بدین شکل :
var table1 = new DataTable("users");
table1.Columns.Add("name");
table1.Columns.Add("id");
table1.Rows.Add("sam", 1);
table1.Rows.Add("mark", 2);
var set = new DataSet("Database");
set.Tables.Add(table1);
DataTable testTable = set.Tables[0].Clone();
testTable.Rows.Add("mark", 3);
Console.WriteLine(set.Tables[0].Rows.Count);//output : 2
Console.WriteLine(testTable.Rows.Count);//output : 1
اگر از متد Clone استفاده نکنید شما با خطا روبه رو میشید چون اصلا ساختار داده های ورودی شما رو نمیشناسه جدول تست.
اما در DataSet.Copy علاوه بر ساختار ، داده ها نیز کپی می شوند که این حالت فکر کنم مد نظر شما باشه ، یعنی بدین شکل :
var table1 = new DataTable("users");
table1.Columns.Add("name");
table1.Columns.Add("id");
table1.Rows.Add("sam", 1);
table1.Rows.Add("mark", 2);
var set = new DataSet("Database");
set.Tables.Add(table1);
DataTable testTable = set.Tables[0].Copy();
testTable.Rows.Add("mark", 3);
Console.WriteLine(set.Tables[0].Rows.Count);//output : 2
Console.WriteLine(testTable.Rows.Count);//output : 3
همونطور که میبینید هم داده ها و هم ساختار به جدول تست کپی شد و بعد از اضافه کردن یک ردیف دیگه خروجی شما نسبت به متد clone تغییر کرد
موفق باشید
ordebehesht
شنبه 04 آبان 1392, 00:04 صبح
دقیقا آنچه که منظورم بود آزاد سازی ds از داده ها هستش
mmd2009
شنبه 04 آبان 1392, 00:43 صبح
ببخشید متوجه نشدم ، یعنی الان باز مشکل دارید ؟ اگر مشکل دارید دقیقا مشکلتون چیه ؟ الان با متد Copy دیگه نباید مشکلی داشته باشید...
ordebehesht
شنبه 04 آبان 1392, 14:40 عصر
مرسی ممنون از کمکتون در واقع من میخوواستم ds رو ازاد کنم که شد
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.