2009-10-29 3 views
5

Я пытаюсь привязать DataTable к аккордеонам, и я обнаружил, что если я получаю DataTable из базы данных с помощью адаптера таблицы, то он идеально привязывается к аккордеон, но то, что я хочу сделать, создать фиктивную таблицу (для целей тестирования, если у меня нет доступа к моей базе данных) кода для создания фиктивной таблицы ниже:Создание объекта DataTable с фиктивными данными

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

Когда я пытаюсь связать данные этой таблицу, однако аккордеон не отображается , Я могу привязать его к gridview или detailview, но не к аккордеонам.

+0

вы можете попробовать, чтобы добавить больше информации к столбцам, таким как dTable.Columns.Add ("firstName", Type.GetType ("System.String"))? –

+0

Я мог бы попробовать это, но, как я уже сказал, я могу привязать эту таблицу к gridview без проблем. – Morgeh

ответ

18

После 4 часов стучал головой о стену, я обнаружил, что поле DataSource ОЧЕНЬ требователен.

Вот мой код:

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(); 

Оказывается, что аккордеон только любит быть связан с DefaultView набора данных таблицы. Я попытался привязать только к DataTable (dt), и он не удался. Даже dt.DefaultView не удалось. Как только я добавил его в DataSet, он связывается как чемпион. Очень раздражает, потерявшись впустую. Я знаю, что ты, наверное, давно забыл об этом, но я хотел сделать его доступным для будущих искателей. Accordion.DataSource должен быть привязан к DataSet.Table.DefaultView для работы.

1

Убедитесь, что вы укажете тип столбцов в table2.Columns.Add (...)

0

Кроме того, как показано на рисунке ответа:

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

Вы можете связать управление аккордеоном к DataTableReader построенного из исходного DataTable

accReportData.DataSource = new System.Data.DataTableReader(ds.Tables[0]); 
accReportData.DataBind();