Я хотел преобразовать данные, поступающие от метода контроллера действий (тип PartialView). Но чем больше я двигаюсь по ссылкам, я запутываюсь.
Код на стороне контроллера:
public PartialViewResult _GetStockInTransit(string Cdate, string State, string Zone, string Amrac, string Store, string Hierarchy, string Itemcategorycode, string Itemcode)
{
List<StockInTransitGrid> res = new List<StockInTransitGrid>();
try
{
if (State.Contains(','))
{
State = State.Replace(",", "','");
}
if (Zone.Contains(','))
{
Zone = Zone.Replace(",", "','");
}
// var dates = Utilities.GetDates(Cdate);
res = objCommon.GetStockInTransitGrid(Cdate, State, Zone, Amrac, Store, Hierarchy, Itemcategorycode, Itemcode);
if (res.Count == 0)
{
return PartialView();
}
}
catch (Exception ex)
{
throw ex;
}
return PartialView(res);
}
Это возвращается на Ajax вызов, и при успешном вызове я вызываю метод для инициализации метода DataTable.
Ajax вызов для вышеуказанной функции выглядит следующим образом:
$.ajax({
url: '../Reports/_GetStockInTransit',
data: {
CDate: currentdate, State: stat, Zone: zon, Amrac: amr, Store: store, Hierarchy: hirarcy,
Itemcategorycode: itemcatCode, Itemcode: code
},
success: function (data) {
if ($.fn.DataTable.isDataTable('#tblstockInTransit')) {
$('#tblstockInTransit').DataTable().destroy();
}
$('#tblstockInTransit tbody').empty();
$('#tblstockInTransit tbody').append(data);
**initializeDataTable();**
LoadBreadCam();
},
error: function (jqXHR, textStatus, errorThrown) {
if (jqXHR.status == 500) {
alert('Internal error: ' + jqXHR.responseText);
} else {
alert('Unexpected error.');
}
}
});
});
Как вы можете видеть, я вызываю функцию initialize DataTable здесь. И, наконец, сама функция:
function initializeDataTable() {
$('#tblstockInTransit').DataTable({
responsive: true,
scrollX: true,
scrollY: true,
dom: 'frBtip',
buttons: [
{
extend: 'csv',
footer: true,
filename: function () { return '@ViewBag.Title' + (new Date()).getTime() },
sheetName: '@ViewBag.Title',
text: '<img src="../Template/img/icons/16/export-csv.png" width="32"/>',
titleAttr: 'Export to CSV',
title: '',
customize: function (csv) {
var str = GetCustomiseOptionsForCSV();
return str+csv;
},
exportOptions: {
modifier: {
search: 'none',
order: 'applied'
}
}
},
{
extend: 'excelHtml5',
footer: true,
filename: function () { return '@ViewBag.Title' + (new Date()).getTime() },
sheetName: '@ViewBag.Title',
text: '<img src="../Template/img/icons/16/Excel-icon.png" width="32"/>',
titleAttr: 'Export to Excel',
title: '',
customize: function (doc) {
GetCustomiseOptionsForExcel(doc)
},
exportOptions: {
modifier: {
search: 'none',
order: 'applied'
}
}
}
],
info: true
});
}
Я понятия не имею, как реализовать здесь обработку на стороне сервера и когда я это сделал, предоставив такие параметры, как:
- обработка: правда,
- serverSide: true,
Я получаю ошибку
Невозможно установить свойство 'data' для null в va (jquery .datatables.min. js)
потому что, возможно, ajax источник, который я здесь не поставляю. Архитектура также является проблемой, но я не могу ее изменить. Любое мнение или дополнительную информацию, которую я могу дать. Но мне нужно знать, нужно ли нам снова давать ajax источник, когда я устанавливаю этот параметр на стороне сервера как true.
РЕДАКТИРОВАТЬ: добавление хранимой процедуры также:
public List<StockInTransitGrid> GetStockInTransitGrid(string Cdate,string State, string Zone, string Amrac, string Store, string Hierarchy, string Itemcategorycode, string Itemcode)
{
List<StockInTransitGrid> stockInTransitList = new List<StockInTransitGrid>();
DataTable data = new DataTable();
SqlConnection con = new SqlConnection(CS);
try
{
con.Open();
SqlCommand cmd = new SqlCommand("SP_Daksha_InTransit", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@cdate", Cdate);
cmd.Parameters.AddWithValue("@state", State);
cmd.Parameters.AddWithValue("@zone", Zone);
cmd.Parameters.AddWithValue("@amrac", Amrac);
cmd.Parameters.AddWithValue("@store", Store);
cmd.Parameters.AddWithValue("@hierarchy", Hierarchy);
if(Itemcode.Length!=0 || Itemcategorycode == "ALL")
{
cmd.Parameters.AddWithValue("@itemcategorycode", DBNull.Value);
}
else
{
cmd.Parameters.AddWithValue("@itemcategorycode", Itemcategorycode.Replace("ALL",""));
}
if (Itemcode.Length > 0)
{
cmd.Parameters.AddWithValue("@itemcode", Itemcode);
}
else
{
cmd.Parameters.AddWithValue("@itemcode", DBNull.Value);
}
SqlDataAdapter adp = new SqlDataAdapter();
adp.SelectCommand = cmd;
adp.Fill(data);
stockInTransitList = Utilities.ConvertDataTable<StockInTransitGrid>(data);
}
catch (Exception ex)
{
throw ex;
}
finally
{
con.Close();
}
return stockInTransitList;
}