30/09/2018, 18:51

Cách binding Data từ List sang DataTable?

Mình đưa dữ liệu từ Sql xuống dataGridView rồi mình dùng list<…> add được hết các data trong dataGridView mình dùng phương thức sort rồi mình lại binding ngược lại từ List sang dataGridView thì không vấn đề gì nhưng mình muốn Update bằng adapter.Update(dataTable) thì cần chuyển dataGridView sang DataTable thì mình tao 1 DataTable=(DataTable)dataGridView1.DataSource thì lại bị lỗi ai giúp mình cách khắc phục với Ví dụ Code :
int n = dataGridView1.RowCount-1;
for (int i = 0; i < n; i++)
{
int iD = int.Parse(dataGridView1.Rows[i].Cells[0].Value.ToString());
string name = dataGridView1.Rows[i].Cells[1].Value.ToString();
int cost = int.Parse(dataGridView1.Rows[i].Cells[2].Value.ToString());
list.Add(new Product() { ID = iD, Name = name, cost = cost });
}
list.Sort(new Product());
dataGridView1.DataSource = list;
DataTable dt = (DataTable)dataGridView1.DataSource;
adapter.Update(dt);
dataGridView1.Refresh();

Phạm Hoàng Tuấn viết 20:53 ngày 30/09/2018

DataTable thì mình tao 1 DataTable=(DataTable)dataGridView1.DataSource thì lại bị lỗi

Nó báo lỗi thế nào vậy bạn.???

dataGridView1.DataSource = list;

Thông thường trước dòng này, mình hay gán dataGridView1.DataSource=null trước rồi mới gán dataGridView1.DataSource=list
Bạn thử xem được không

Nguyễn Văn Tuấn viết 20:57 ngày 30/09/2018

K được bạn ơi bạn có cách nào khác không

Nguyễn Minh Hải viết 21:06 ngày 30/09/2018

Rất may là mình đã từng dùng cách này:
Đây là ý tưởng:

//Tạo 1 cái dgv
DataGridView dgvNguoiTro; 
//Tạo 1 cái datatable
DataTable KhachHang;
//Lấy từng hàng trong dgv
             foreach (DataGridViewRow p in dgvNguoiTro.Rows) //Lấy từng hàng trong DataGridView
                {
                   //Thêm từng hàng của dgv vào từng hàng của datatable;
                    KhachHang.Rows.Add(int.Parse(p.Cells[0].Value.ToString()), p.Cells[1].Value.ToString(),DateTime.Parse(p.Cells[2].Value.ToString()),  bool.Parse(p.Cells[3].Value.ToString()),
                        int.Parse(p.Cells[4].Value.ToString()), p.Cells[5].Value.ToString(), p.Cells[6].Value.ToString(), p.Cells[7].Value.ToString());                    

                }

Good luck!

Nguyễn Văn Tuấn viết 21:05 ngày 30/09/2018

Thank bạn mình làm được rồi nhưng lại xảy ra vấn đề khác là dùng Adapter.Update() nó cũng sort rồi update trong SQL nhưng nó lại nhân thêm 1 bảng đúng như vậy nữa b có cách nào khắc phục không giúp m với

Nguyễn Minh Hải viết 21:05 ngày 30/09/2018

Ý của bạn là sort dữ liệu của database ở trên form rồi sau đó lưu xuống database?

Nguyễn Văn Tuấn viết 20:52 ngày 30/09/2018

Uh ý mình là vậy b có cách nào khác không??

Bài liên quan
0