Thứ tự cột excel bị đổi khi đưa dữ liệu vào DataGridview ????

Liên hệ QC

johncena007

Thành viên mới
Tham gia
19/12/10
Bài viết
4
Được thích
0
các bạn cho mình hỏi, mình lập trình với dot net
giả sử mình có file excel với các cột : A,B,C,D nhưng sao khi đưa vào girdview nó lại chuyển thành B,A,C,D hjxhjx (mặc dù mình truy xuất theo đúng thứ tự). Các bạn giúp mình với
 
Chào bạn,

Để việc trả lời được cụ thể, bạn cần phải có tập tin ví dụ, như vậy thì người trợ giúp mới phát hiện được lỗi là ở chổ nào.

Lê Văn Duyệt
 
mình vd khi lấy dữ liệu của khách hàng từ file excel vào gridview
câu lệnh của mình :
public ArrayList getDS()
{
ArrayList arr = new ArrayList();


string query = "SELECT * FROM DanhSach";
OleDbDataReader reader = (OleDbDataReader)_provider.executeQuery(query);
KhachHangInfo info;
while (reader.Read())
{
info = new QuaTangInfo();
info.MaKH = reader["MaKH"].ToString();
info.TenKH = reader["TenKH"].ToString();
info.Loai = reader["Loai"].ToString();
info.STT = reader["STT"].ToString();
arr.Add(info);
}
reader.Close();
return arr;
}

sau đó đưa vào girdview
dtgvDanhSach.DataSource = arr;
nhưng sao khi đưa vào gridview thì thứ tự cột bị thay đổi: vd: Loai,STT,MaKH,TenKH,
cùng một Chương trình nhưng qua 2 máy khác nhau thì 2 cách hiển thi # nhau,bó tay luôn, nhờ các bạn giúp với thanks
 
Thông thường, nếu chưa định nghĩa trước các cột của DataGridView, nó sẽ tự động tạo ra các cột (mặc định thì thuộc tính AutoGenerateColumns sẽ có giá trị True).
Vì vậy, để khắc phục tình trạng này, bạn cần xác định trước các cột sau đó mới truyền dữ liệu.
 
Lần chỉnh sửa cuối:
Thông thường, nếu chưa định nghĩa trước các cột của DataGridView, nó sẽ tự động tạo ra các cột (mặc định thì thuộc tính AutoGenerateColumns sẽ có giá trị True).
Vì vậy, để khắc phục tình trạng này, bạn cần xác định trước các cột sau đó mới truyền dữ liệu.

mình đã lấy dữ liệu vô Arraylist rồi.
bi h mình muốn truyền vô datagridview theo cột cố định thì như thế nào hả bạn?(câu lệnh ra sao)
nếu datagridview.datasource = Arraylist thì thứ tự cột bị đảo hết hà
nhờ bạn chỉ giúp cám ơn
 
Đây là một đoạn mã bạn có thể dùng! Nhưng dùng oledb như thế này là một điều không thiết thực - Bạn nên dùng DataTable và code ngắn hơn nhiều. Chắc dữ liệu của bạn là Access thì phải.
PHP:
//Bạn cần thiết lập query như thế này
string strSql = "SELECT MaKH, TenKH, Loai, STT FROM DanhSach";
//Thiết lập kết nối
OleDbConnection con = new OleDbConnection(strProvider);
OleDbCommand cmd = new OleDbCommand(strSql, con);
con.Open();
cmd.CommandType = CommandType.Text;
OleDbDataReader dr = cmd.ExecuteReader();

//Thực ra không nên dùng OleDbDataReader - nhưng bạn đã dùng thì tôi giới thiệu
//cách này vậy
//Đếm số cột dữ liệu để thêm số cột vào cho hợp lý theo đúng thứ tự xuất hiện trong querry
int columnCount = dr.FieldCount;

for (int i = 0; i < columnCount; i++)
{
    DataGridView1.Columns.Add(dr.GetName(i).ToString(), dr.GetName(i).ToString());
}
//Thêm từng dòng dữ liệu đây
string[] rowData = new string[columnCount];
while (dr.Read())
{
    for (int k = 0; k < columnCount; k++)
    {
        if (dr.GetFieldType(k).ToString() =="System.Int32") rowData[k] = dr.GetInt32(k).ToString();
        if (dr.GetFieldType(k).ToString() == "System.String") rowData[k] = dr.GetString(k);
    }

    DataGridView1.Rows.Add(rowData);
}
 
thanks bạn nhiều nha, mình tùy chỉnh theo cách khác nhưng mà cũng dc rồi hjhj
 
Web KT

Bài viết mới nhất

Back
Top Bottom