Я использую datatables.net для ASP.NET MVC и хотел бы создать имена классов DataTablesConfiguration, которые содержат все свойства datatables.net. Цель этого - вместо этого сконфигурировать свойства таблиц данных в View или JS-файле. Я могу сконфигурировать, установив свойства объекта DataTablesConfiguration в коде на стороне сервера, а затем сериализовать объект в объект json и передать в View. Таким образом, все настройки таблиц данных будут выполняться на стороне сервера.
Пример:
Я могу сделать это для настройки таблиц данных:
DataTablesConfiguration config = new DataTablesConfiguration();
config.ServerSide = true;
config.Ajax.Url = "/Demo/LoadData";
config.Columns.Add(new DataTablesColumn
{
Data = "CustomerID",
AutoWidth = true,
Header= "CustomerID",
Name = "CustomerID"
});
Проблема:
Datatables имеет много свойств с динамическим типом. Пример:
АВТОЗАПОЛНЕНИЯ :
Может быть, это:
$('#myTable').DataTable( {
autoFill: true
} );
Но иногда:
$('#myTable').DataTable( {
autoFill: {
alwaysAsk: true,
columns: ':not(:last-child)'
}
} );
And sometimes:
$('#myTable').DataTable( {
autoFill: {
alwaysAsk: true,
columns: [0,1,2],
enable: true
}
} );
Кнопка :
Может быть, это:
$('#myTable').DataTable( {
buttons: [
'copy', 'excel', 'pdf'
]
} );
Но через некоторое время:
$('#myTable').DataTable( {
buttons: [
{
extend: 'copy',
text: '<u>C</u>opy',
key: {
key: 'c',
altKey: true
},
//and some other properties may appear here based on extend
property
}
]
} );
Я имею в виду свойства в конфигурации datatables динамические. Итак, как описать их с помощью класса в коде C # и в состоянии затем сериализовать его в соответствии с данными, которые точно хочет получить.
Я попробовал это:
public class DataTablesConfiguration
{
//Init default values base on datatables.net's reference
public DataTablesConfiguration()
{
this.Buttons = new List<ButtonOption>();
}
[JsonProperty(PropertyName = "buttons")]
public ICollection<ButtonOption> Buttons { get; set; }
public string GetJsonConfig()
{
return JsonConvert.SerializeObject(this);
}
}
public class ButtonOption
{
public ButtonOption(string extend, string text)
{
this.Extend = extend;
this.Text = text;
}
[JsonProperty(PropertyName = "extend")]
public string Extend { get; set; }
[JsonProperty(PropertyName = "text")]
public string Text { get; set; }
//How can I define all other properties here
}
Но, похоже, это не очень хороший подход. Есть ли лучший способ сделать так, чтобы таблицы данных могли быть настроены на серверном коде?