PDA

View Full Version : حفظ داده در data table



ordebehesht
جمعه 03 آبان 1392, 12:02 عصر
با سلا من میخوام وقتی از dataset داده ها رو وارد datatable کردم بعد ds رو خالی کردم داده هام تو dt بمونه

mmd2009
جمعه 03 آبان 1392, 14: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
جمعه 03 آبان 1392, 23:04 عصر
دقیقا آنچه که منظورم بود آزاد سازی ds از داده ها هستش

mmd2009
جمعه 03 آبان 1392, 23:43 عصر
ببخشید متوجه نشدم ، یعنی الان باز مشکل دارید ؟ اگر مشکل دارید دقیقا مشکلتون چیه ؟ الان با متد Copy دیگه نباید مشکلی داشته باشید...

ordebehesht
شنبه 04 آبان 1392, 13:40 عصر
مرسی ممنون از کمکتون در واقع من میخوواستم ds رو ازاد کنم که شد