2009-10-29 70 views
5

Tôi đang cố gắng databind một DataTable đến một accordion và tôi đã tìm thấy rằng Nếu tôi lấy DataTable từ một cơ sở dữ liệu bằng cách sử dụng một bộ điều hợp bảng nó liên kết với accordion một cách hoàn hảo, tuy nhiên những gì tôi muốn làm là tạo ra một bảng giả (để thử nghiệm các mục đích nếu tôi không có quyền truy cập vào cơ sở dữ liệu của tôi) mã để tạo ra các bảng giả là dưới đây:Tạo một đối tượng DataTable với dữ liệu giả

DataTable table2 = new DataTable("articletable"); 
    table2.Columns.Add("articleID"); 
    table2.Columns.Add("title"); 
    table2.Columns.Add("content"); 

    DataRow row = table2.NewRow(); 
    row[0] = "1"; 
    row[1] = "article name"; 
    row[2] = "article contents go here"; 
    table2.Rows.Add(row); 

Khi tôi cố gắng dữ liệu ràng buộc bảng tuy nhiên accordion không hiển thị . Tôi có thể liên kết nó với một GridView hoặc detailsview nhưng không phải là accordion.

+0

bạn có thể thử để thêm thông tin vào các cột như dTable.Columns.Add ("firstName", Type.GetType ("System.String"))? –

+0

Tôi có thể thử điều đó nhưng như tôi đã nói trước khi tôi có thể databind bảng đó để một GridView không có vấn đề. – Morgeh

Trả lời

18

Sau 4 giờ đập đầu tôi vào tường, tôi phát hiện ra rằng trường DataSource là RẤT kén cá chọn canh.

Dưới đây là mã của tôi:

DataSet ds = new DataSet(); 

     DataTable dt = new DataTable(); 
     dt.Columns.Add("Name"); 
     dt.Columns.Add("Branch"); 
     dt.Columns.Add("Officer"); 
     dt.Columns.Add("CustAcct"); 
     dt.Columns.Add("Grade"); 
     dt.Columns.Add("Rate"); 
     dt.Columns.Add("OrigBal"); 
     dt.Columns.Add("BookBal"); 
     dt.Columns.Add("Available"); 
     dt.Columns.Add("Effective"); 
     dt.Columns.Add("Maturity"); 
     dt.Columns.Add("Collateral"); 
     dt.Columns.Add("LoanSource"); 
     dt.Columns.Add("RBCCode"); 

     dt.Rows.Add(new object[] { "James Bond, LLC", 120, "Garrison Neely", "123 3428749020", 35, "6.000", "$24,590", "$13,432", 
      "$12,659", "12/13/21", "1/30/27", 55, "ILS", "R"}); 

     ds.Tables.Add(dt); 

     accReportData.DataSourceID = null; 
     accReportData.DataSource = ds.Tables[0].DefaultView; 
     accReportData.DataBind(); 

Hóa ra rằng accordion chỉ thích bị ràng buộc vào defaultview một bảng dữ liệu của. Tôi đã cố gắng ràng buộc chỉ là một DataTable (dt) và nó không thành công. Ngay cả dt.DefaultView không thành công. Một khi tôi thêm nó vào một DataSet, nó liên kết như một nhà vô địch. Rất khó chịu, mất thời gian lãng phí. Tôi biết bạn có lẽ đã từ lâu quên điều này, nhưng tôi muốn làm cho nó có sẵn cho những người tìm kiếm trong tương lai. Accordion.DataSource phải được liên kết với một DataSet.Table.DefaultView để hoạt động.

1

Hãy chắc chắn rằng bạn chỉ định kiểu cho các cột trong table2.Columns.Add (...)

0

Ngoài ra, như đã thấy trong các câu trả lời dưới đây:

https://stackoverflow.com/a/6108163/637903

Bạn có thể ràng buộc Control Accordion đến một DataTableReader xây dựng từ bản gốc DataTable

accReportData.DataSource = new System.Data.DataTableReader(ds.Tables[0]); 
accReportData.DataBind(); 
Các vấn đề liên quan