Tôi làm cách nào để xuất GridView.DataSource
thành dữ liệu hoặc tập dữ liệu?Làm cách nào tôi có thể xuất GridView.DataSource thành dữ liệu hoặc tập dữ liệu?
Trả lời
Bạn nên chuyển đổi đầu tiên DataSource
trong BindingSource
, nhìn ví dụ
BindingSource bs = (BindingSource)dgrid.DataSource; // Se convierte el DataSource
DataTable tCxC = (DataTable) bs.DataSource;
Với dữ liệu tCxC
bạn có thể làm bất cứ điều gì.
Cá nhân tôi sẽ đi với:
DataTable tbl = Gridview1.DataSource as DataTable;
này sẽ cho phép bạn kiểm tra cho null vì điều này dẫn đến hoặc đối tượng DataTable hoặc null. Đúc nó như là một DataTable sử dụng (DataTable) GridView1.DataSource sẽ gây ra một lỗi crashing trong trường hợp DataSource thực sự là một DataSet hoặc thậm chí một số loại bộ sưu tập.
Hỗ trợ Tài liệu: MSDN Documentation on "as"
Mặc dù điều này không tạo ra bất kỳ lỗi nào, khi tôi di chuột để kiểm tra giá trị của datatable của tôi nó cho thấy nó như là null mặc dù của tôi GridView hiển thị dữ liệu được điền. DataTable dt = gvJobSearchEngine.DataSource dưới dạng DataTable; –
Ambu,
Tôi đã gặp vấn đề tương tự như bạn, và đây là đoạn code tôi sử dụng để tìm nó ra. Mặc dù, tôi không sử dụng phần hàng chân trang cho mục đích của tôi, tôi đã đưa nó vào mã này.
DataTable dt = new DataTable();
// add the columns to the datatable
if (GridView1.HeaderRow != null)
{
for (int i = 0; i < GridView1.HeaderRow.Cells.Count; i++)
{
dt.Columns.Add(GridView1.HeaderRow.Cells[i].Text);
}
}
// add each of the data rows to the table
foreach (GridViewRow row in GridView1.Rows)
{
DataRow dr;
dr = dt.NewRow();
for (int i = 0; i < row.Cells.Count; i++)
{
dr[i] = row.Cells[i].Text.Replace(" ","");
}
dt.Rows.Add(dr);
}
// add the footer row to the table
if (GridView1.FooterRow != null)
{
DataRow dr;
dr = dt.NewRow();
for (int i = 0; i < GridView1.FooterRow.Cells.Count; i++)
{
dr[i] = GridView1.FooterRow.Cells[i].Text.Replace(" ","");
}
dt.Rows.Add(dr);
}
Điều này đến trễ nhưng khá hữu ích. Tôi Chỉ cần đăng để tham khảo trong tương lai
DataTable dt = new DataTable();
Data.DataView dv = default(Data.DataView);
dv = (Data.DataView)ds.Select(DataSourceSelectArguments.Empty);
dt = dv.ToTable();
Data.DataView không có bất kỳ cửa sổ bật lên intelliSense nào khi tôi thử mã của bạn. –
Tôi đã sử dụng bên dưới dòng mã và nó hoạt động, Hãy thử điều này
DataTable dt = dataSource.Tables[0];
gì đang kiểu của đối tượng được trỏ đến bởi GridView.DataSource? –
http://www.vbforums.com/showthread.php?t=474895 – TheTXI