Я пытаюсь преобразовать таблицу данных в смарт-таблицу в C#. В основном хранимая процедура возвращает dataTable, и мне нужно перевести ее на объект JavaScript, но я не знаю, какие имена столбцов у меня будут. Смарт-таблица угловой рамки, которые требуется определенный формат, как показано ниже egample:Преобразование DataTable в динамический класс
$scope.columnCollection = ["firstName", "lastName", "birthDate", "balance", "email"];
$scope.rowCollection = [
{ firstName: 'Laurent', lastName: 'Renard', birthDate: new Date('1987-05-21'), balance: 102, email: '[email protected]' },
{ firstName: 'Blandine', lastName: 'Faivre', birthDate: new Date('1987-04-25'), balance: -2323.22, email: '[email protected]' },
{ firstName: 'Francoise', lastName: 'Frere', birthDate: new Date('1955-08-27'), balance: 42343, email: '[email protected]' }
];
Так что я создал этот код, чтобы перевести его:
public class SmartTable
{
public IList<string> ColumnCollection { get; set; }
public IList<Object> RowCollection { get; set; }
}
public SmartTable GetTableData(string sp, int widgetId = 0)
{
var connection = ConfigurationManager.ConnectionStrings["EFDbContext"].ConnectionString;
using (var da = new SqlDataAdapter("exec " + sp, connection))
{
DataTable dt = new DataTable();
da.Fill(dt);
da.FillSchema(dt, SchemaType.Mapped);
IList<string> colColls = new List<string>();
foreach(DataColumn dc in dt.Columns)
{
colColls.Add(dc.Caption);
}
IList<Object> rowColls = new List<Object>();
foreach (DataRow dr in dt.Rows)
{
dynamic rowColl = new Object();
foreach (DataColumn dc in dt.Columns)
{
rowColl.Add(dc.Caption, dr[dc].ToString());
}
rowColls.Add(rowColl);
}
SmartTable smartTable = new SmartTable
{
ColumnCollection = colColls,
RowCollection = rowColls
};
return smartTable;
};
}
Но когда я запускаю это я получаю сообщение об ошибке «'объект "не содержит определения для„Add“» и ряд ниже подсвечивается:
rowColl.Add(dc.Caption, dr[dc].ToString());
Любая идея, как решить эту проблему?
EDIT
Если я ожидал бы, что статические данные все время, которое я хотел бы сделать это, как показано ниже:
public class Row
{
public string firstName { get; set; }
public string lastName { get; set; }
public string birthDate { get; set; }
...
}
, но проблема в том, что я не знаю, что и сколько столбцов У меня будет.
Что вы ожидаете от этого? Возможно, вам нужен 'var rowColl = new List
Вопрос отредактирован, чтобы объяснить, что я ожидаю. – Whistler