Share Code Web - Chia sẻ niềm đam mê bất tận > Lập trình > C/C++/C# > Gộp hai cột datatable khác nhau sau đó bind ra một control
Gộp hai cột datatable khác nhau sau đó bind ra một control
Nguyễn Trung Hiếu
Share Code Web Company 2012

Gộp hai cột datatable khác nhau sau đó bind ra một control

Có một bài toán rất hay như thế này: “Tôi có một datatable “Server” có hai cột là Server và Database. Một datatable “Server1” có hai cột khác là Servername và Databasename. Làm sao tôi có thể hiển thị dữ liệu trên hai cột Server và Servername trong một control.

Bài toán rất hay, giờ chúng ta sẽ cùng đi giải quyết bài toán này
1. Tạo một window application, sau đó add một combobox control
2. Tôi có 2 file XML được dump ra từ dataset
XML file 1

XML file 2

3. Bây giờ trong form_load bạn add code bên dưới. Tôi sẽ gộp 2 datatable từ 2 dataset. Sau đó tạo một cột mới trong Dataset vừa gộp và fill giá trị vào cột mới này.
[C#]
private void Form1_Load(object sender, EventArgs e)
{
DataSet ds = new DataSet();
string path = “C:\\XMLFile1.xml”;
//Read XMLFILE1.XML and save it in ds
ds.ReadXml(path);
path = “C:\\XMLFile2.xml”;
DataSet ds2 = new DataSet();
//Read XMLFILE2.XML and save it in ds2
ds2.ReadXml(path);
//Merge datatable from both datasets
ds.Tables[0].Merge(ds2.Tables[0]);
//add new column “All Servers”
ds.Tables[0].Columns.Add(“All Servers”, typeof(string));
//Read datatable and fetch all server and dump it into new column “All servers”
foreach (DataRow dr in ds.Tables[0].Rows)
{
dr[“All Servers”] = dr[“server”].ToString();
}
//Read datatable and fetch all servername and dump it into new column “All servers”
foreach (DataRow dr in ds.Tables[0].Rows)
{
//When we merged 2 datatables if there are 3 rows in datatable 1 and 2 in datatable2
//now it will become 5rows,So am checking if its blank, then fill
//it with servername column from datatable2(initial)
if (dr[“All Servers”] == “”)
dr[“All Servers”] = dr[“servername”].ToString();
}
//Bind the datatable
comboBox1.DataSource = ds.Tables[0];
//set displaymember as “All servers”, the newly created column.
comboBox1.DisplayMember = “All Servers”;
}
[/C#]
4. Chạy thử xem nào!
merger two datatable column
Chúc bạn thành công!

Download code

Tác giả: Nguyễn Trung Hiếu

Một blogger ... cùi bắp! Đơn giản: tôi muốn ghi lại những gì xảy ra xung quanh, cả công việc lẫn cuộc sống và chia sẻ với các bạn đọc. Nếu bạn cảm thấy bài viết có nhiều điểm không chính xác, hãy comment và chia sẻ để tôi còn được học hỏi từ những góp ý của bạn. Email: hieunt.dcn@gmail.com

http://sharecodeweb.net/?s={search_term_string}