2009-04-24 27 views

Trả lời

23

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ì.

37

Giả sử DataSource của bạn được loại DataTable, bạn chỉ có thể làm điều này:

myGridView.DataSource as DataTable 
+0

Cảm ơn bạn là ok ... – Penguen

+20

Sau đó, làm thế nào về bạn ** chấp nhận ** câu trả lời ?! – Michael

+0

đây là câu trả lời hay nhất cho câu hỏi này, cảm ơn bạn – MBH

15

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"

+0

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; –

6

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("&nbsp;",""); 
     } 
     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("&nbsp;",""); 
     } 
     dt.Rows.Add(dr); 
    } 
-1

Đ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(); 
+0

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. –

0

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]; 
Các vấn đề liên quan