PDA

View Full Version : ادغام دو DataGrid View



mahdi-1
شنبه 26 اسفند 1391, 10:22 صبح
سلام
من میخوام اطلاعات موجود تو Data Grid View1 رو به اطلاعات موجود تو Data Grid View2 اضافه کنم (یعنی دوتا Data Grid با هم ادغام بشن) ای ترفندستانی های ترفند ساز لطفا راهنمایی کنید.

FastCode
شنبه 26 اسفند 1391, 11:01 صبح
راه زیاده ولی خیلی هاشون تمیز در نمیاد.
برای روش درست این کار اول راهنمای Virtual Mode رو در MSDN بخونید.

C#‎_best_Programmer
شنبه 26 اسفند 1391, 11:50 صبح
داشم با حلقه خیلی راحت می تونی انجام بدی

tooraj_azizi_1035
شنبه 26 اسفند 1391, 11:52 صبح
از متد Merge شیء DataTable استفاده کنید:


private static void DemonstrateMergeTable()
{
DataTable table1 = new DataTable("Items");

// Add columns
DataColumn column1 = new DataColumn("id", typeof(System.Int32));
DataColumn column2 = new DataColumn("item", typeof(System.Int32));
table1.Columns.Add(column1);
table1.Columns.Add(column2);

// Set the primary key column.
table1.PrimaryKey = new DataColumn[] { column1 };

// Add RowChanged event handler for the table.
table1.RowChanged +=
new System.Data.DataRowChangeEventHandler(Row_Changed) ;

// Add some rows.
DataRow row;
for (int i = 0; i <= 3; i++)
{
row = table1.NewRow();
row["id"] = i;
row["item"] = i;
table1.Rows.Add(row);
}

// Accept changes.
table1.AcceptChanges();
PrintValues(table1, "Original values");

// Create a second DataTable identical to the first.
DataTable table2 = table1.Clone();

// Add three rows. Note that the id column can't be the
// same as existing rows in the original table.
row = table2.NewRow();
row["id"] = 14;
row["item"] = 774;
table2.Rows.Add(row);

row = table2.NewRow();
row["id"] = 12;
row["item"] = 555;
table2.Rows.Add(row);

row = table2.NewRow();
row["id"] = 13;
row["item"] = 665;
table2.Rows.Add(row);

// Merge table2 into the table1.
Console.WriteLine("Merging");
table1.Merge(table2);
PrintValues(table1, "Merged With table1");

}

private static void Row_Changed(object sender,
DataRowChangeEventArgs e)
{
Console.WriteLine("Row changed {0}\t{1}",
e.Action, e.Row.ItemArray[0]);
}

private static void PrintValues(DataTable table, string label)
{
// Display the values in the supplied DataTable:
Console.WriteLine(label);
foreach (DataRow row in table.Rows)
{
foreach (DataColumn col in table.Columns)
{
Console.Write("\t " + row[col].ToString());
}
Console.WriteLine();
}
}

C#‎_best_Programmer
شنبه 26 اسفند 1391, 11:58 صبح
DataTable dt = new DataTable();
dt = جدول;
DataTable dt2 = new DataTable();
dt2 = جدول;
dt.Columns.Add("نام");
dt.Columns.Add("نام");
dt.Columns.Add("نام");
for (int i = 0; i < dt.Rows.Count; i++)
{
dt.Rows[i]["نام"] = dt2.Rows[i]["نام"];
dt.Rows[i]["نام"] = dt2.Rows[i]["نام"];
dt.Rows[i]["نام"] = dt2.Rows[i]["نام"];
}

FastCode
شنبه 26 اسفند 1391, 12:59 عصر
از متد Merge شیء DataTable استفاده کنید:

یعنی مصرف حافظه دو برابر.

FastCode
شنبه 26 اسفند 1391, 13:00 عصر
DataTable dt = new DataTable();
dt = جدول;
DataTable dt2 = new DataTable();
dt2 = جدول;
dt.Columns.Add("نام");
dt.Columns.Add("نام");
dt.Columns.Add("نام");
for (int i = 0; i < dt.Rows.Count; i++)
{
dt.Rows[i]["نام"] = dt2.Rows[i]["نام"];
dt.Rows[i]["نام"] = dt2.Rows[i]["نام"];
dt.Rows[i]["نام"] = dt2.Rows[i]["نام"];
}

این overwrite میکنه و جواب سوال نیست.

tooraj_azizi_1035
شنبه 26 اسفند 1391, 15:15 عصر
یعنی مصرف حافظه دو برابر.
Virtual Modeچه ربطی به ادغام داره؟
بعد هم اگر حرف شما درست باشه پس Microsoft اشتباه کرده که این متد رو ساخته؟
اگه اشتباه نکرده پس کی باید ازش استفاده کرد؟

FastCode
شنبه 26 اسفند 1391, 16:26 عصر
Virtual Modeچه ربطی به ادغام داره؟
بعد هم اگر حرف شما درست باشه پس Microsoft اشتباه کرده که این متد رو ساخته؟
اگه اشتباه نکرده پس کی باید ازش استفاده کرد؟
خیلی از روشهای مایکروسافت درست نیستن.
ربط VirtualMode هم اینه که میتونید بهش بگید تا سطر فلان رو از Table اول و بقیه رو از Table دوم بخونه و اگر سطری به Table اول اضافه بشه لازم نیست همه جداول رو از اول کپی کنید.
در ضمن Virtual Mode میتونه بهتر با DataSource ارتباط برقرار کنه.

tooraj_azizi_1035
دوشنبه 28 اسفند 1391, 18:21 عصر
خیلی از روشهای مایکروسافت درست نیستن.


شما برای این چیزی که میگید یک مثال بیارید و علت درست نبودنش رو هم بگید.