168 строки
9.4 KiB
C#
168 строки
9.4 KiB
C#
#region Copyright Syncfusion Inc. 2001-2022.
|
|
// Copyright Syncfusion Inc. 2001-2022. All rights reserved.
|
|
// Use of this code is subject to the terms of our license.
|
|
// A copy of the current license can be obtained at any time by e-mailing
|
|
// licensing@syncfusion.com. Any infringement will be prosecuted under
|
|
// applicable laws.
|
|
#endregion
|
|
using Syncfusion.JavaScript;
|
|
using Syncfusion.Olap.Manager;
|
|
using Syncfusion.Olap.Reports;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Configuration;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Net.Http;
|
|
using System.Web;
|
|
using System.Web.Http;
|
|
using System.Web.Script.Serialization;
|
|
using OLAPUTILS = Syncfusion.JavaScript.Olap;
|
|
|
|
namespace MVCSampleBrowser
|
|
{
|
|
public class PagingController : ApiController
|
|
{
|
|
Syncfusion.JavaScript.PivotGrid htmlHelper = new Syncfusion.JavaScript.PivotGrid();
|
|
public static int cultureIDInfoval = 1033;
|
|
static string connectionString = ConfigurationManager.ConnectionStrings["Adventure Works"].ConnectionString + "locale identifier=" + cultureIDInfoval + ";";
|
|
PivotClient clientHelper = new PivotClient();
|
|
JavaScriptSerializer serializer = new JavaScriptSerializer();
|
|
|
|
[System.Web.Http.ActionName("InitializeGrid")]
|
|
[System.Web.Http.HttpPost]
|
|
public Dictionary<string, object> InitializeGrid(Dictionary<string, object> jsonResult)
|
|
{
|
|
OlapDataManager DataManager = null;
|
|
dynamic customData = serializer.Deserialize<dynamic>(jsonResult["customObject"].ToString());
|
|
var cultureIDInfo = new System.Globalization.CultureInfo(("en-US")).LCID;
|
|
if (customData is Dictionary<string, object> && customData.ContainsKey("Language"))
|
|
{
|
|
cultureIDInfo = new System.Globalization.CultureInfo((customData["Language"])).LCID;
|
|
}
|
|
connectionString = connectionString.Replace("" + cultureIDInfoval + "", "" + cultureIDInfo + "");
|
|
cultureIDInfoval = cultureIDInfo;
|
|
DataManager = new OlapDataManager(connectionString);
|
|
DataManager.Culture = new System.Globalization.CultureInfo((cultureIDInfo));
|
|
DataManager.OverrideDefaultFormatStrings = true;
|
|
if (jsonResult.ContainsKey("currentReport") && jsonResult["currentReport"].ToString() != "")
|
|
DataManager.SetCurrentReport(OLAPUTILS.Utils.DeserializeOlapReport(jsonResult["currentReport"].ToString()));
|
|
else
|
|
DataManager.SetCurrentReport(CreateOlapReport());
|
|
return htmlHelper.GetJsonData(jsonResult["action"].ToString(), DataManager, jsonResult["gridLayout"].ToString(), Convert.ToBoolean(jsonResult["enablePivotFieldList"].ToString()));
|
|
}
|
|
|
|
[System.Web.Http.ActionName("DrillGrid")]
|
|
[System.Web.Http.HttpPost]
|
|
public Dictionary<string, object> DrillGrid(Dictionary<string, object> jsonResult)
|
|
{
|
|
dynamic customData = serializer.Deserialize<dynamic>(jsonResult["customObject"].ToString());
|
|
OlapDataManager DataManager = new OlapDataManager(connectionString);
|
|
DataManager = new OlapDataManager(connectionString);
|
|
if (customData is Dictionary<string, object> && customData.ContainsKey("Language"))
|
|
{
|
|
DataManager.Culture = new System.Globalization.CultureInfo((customData["Language"]));
|
|
DataManager.OverrideDefaultFormatStrings = true;
|
|
}
|
|
DataManager.SetCurrentReport(OLAPUTILS.Utils.DeserializeOlapReport(jsonResult["currentReport"].ToString()));
|
|
return htmlHelper.GetJsonData(jsonResult["action"].ToString(), connectionString, DataManager, jsonResult["cellPosition"].ToString(), jsonResult["headerInfo"].ToString(), jsonResult["layout"].ToString());
|
|
}
|
|
|
|
[System.Web.Http.ActionName("NodeDropped")]
|
|
[System.Web.Http.HttpPost]
|
|
public Dictionary<string, object> NodeDropped(Dictionary<string, object> jsonResult)
|
|
{
|
|
OlapDataManager DataManager = new OlapDataManager(connectionString);
|
|
DataManager.SetCurrentReport(OLAPUTILS.Utils.DeserializeOlapReport(jsonResult["currentReport"].ToString()));
|
|
return htmlHelper.GetJsonData(jsonResult["action"].ToString(), DataManager, jsonResult["dropType"].ToString(), jsonResult["nodeInfo"].ToString(), jsonResult["filterParams"].ToString(), jsonResult["gridLayout"].ToString(), true);
|
|
}
|
|
|
|
[System.Web.Http.ActionName("Filtering")]
|
|
[System.Web.Http.HttpPost]
|
|
public Dictionary<string, object> Filtering(Dictionary<string, object> jsonResult)
|
|
{
|
|
OlapDataManager DataManager = new OlapDataManager(connectionString);
|
|
DataManager.SetCurrentReport(OLAPUTILS.Utils.DeserializeOlapReport(jsonResult["currentReport"].ToString()));
|
|
return htmlHelper.GetJsonData(jsonResult["action"].ToString(), connectionString, DataManager, null, jsonResult["filterParams"].ToString(), jsonResult["gridLayout"].ToString());
|
|
}
|
|
|
|
[System.Web.Http.ActionName("FetchMembers")]
|
|
[System.Web.Http.HttpPost]
|
|
public Dictionary<string, object> FetchMembers(Dictionary<string, object> jsonResult)
|
|
{
|
|
OlapDataManager DataManager = new OlapDataManager(connectionString);
|
|
DataManager.SetCurrentReport(OLAPUTILS.Utils.DeserializeOlapReport(jsonResult["currentReport"].ToString()));
|
|
return htmlHelper.GetJsonData(jsonResult["action"].ToString(), DataManager, null, jsonResult["headerTag"].ToString());
|
|
}
|
|
|
|
[System.Web.Http.ActionName("Paging")]
|
|
[System.Web.Http.HttpPost]
|
|
public Dictionary<string, object> Paging(Dictionary<string, object> jsonResult)
|
|
{
|
|
OlapDataManager DataManager = new OlapDataManager(connectionString);
|
|
DataManager.SetCurrentReport(htmlHelper.SetPaging(jsonResult["currentReport"].ToString(), jsonResult["pagingInfo"].ToString()));
|
|
return htmlHelper.GetJsonData(jsonResult["action"].ToString(), DataManager, jsonResult["layout"].ToString());
|
|
}
|
|
|
|
[System.Web.Http.ActionName("RemoveButton")]
|
|
[System.Web.Http.HttpPost]
|
|
public Dictionary<string, object> RemoveButton(Dictionary<string, object> jsonResult)
|
|
{
|
|
OlapDataManager DataManager = new OlapDataManager(connectionString);
|
|
DataManager.SetCurrentReport(OLAPUTILS.Utils.DeserializeOlapReport(jsonResult["currentReport"].ToString()));
|
|
return htmlHelper.GetJsonData(jsonResult["action"].ToString(), connectionString, DataManager, null, jsonResult["headerInfo"].ToString(), jsonResult["gridLayout"].ToString());
|
|
}
|
|
|
|
[System.Web.Http.ActionName("MemberExpanded")]
|
|
[System.Web.Http.HttpPost]
|
|
public Dictionary<string, object> MemberExpanded(Dictionary<string, object> jsonResult)
|
|
{
|
|
OlapDataManager DataManager = new OlapDataManager(connectionString);
|
|
if (!string.IsNullOrEmpty(jsonResult["currentReport"].ToString()))
|
|
DataManager.SetCurrentReport(OLAPUTILS.Utils.DeserializeOlapReport(jsonResult["currentReport"].ToString()));
|
|
return htmlHelper.GetJsonData(jsonResult["action"].ToString(), DataManager, jsonResult["checkedStatus"].ToString(), jsonResult["parentNode"].ToString(), jsonResult["tag"].ToString(), jsonResult["cubeName"].ToString());
|
|
}
|
|
|
|
[System.Web.Http.ActionName("Export")]
|
|
[System.Web.Http.HttpPost]
|
|
public void Export()
|
|
{
|
|
string args = HttpContext.Current.Request.Form.GetValues(0)[0];
|
|
OlapDataManager DataManager = new OlapDataManager(connectionString);
|
|
string fileName = "Sample";
|
|
htmlHelper.ExportPivotGrid(DataManager, args, fileName, System.Web.HttpContext.Current.Response);
|
|
}
|
|
|
|
[System.Web.Http.ActionName("DeferUpdate")]
|
|
[System.Web.Http.HttpPost]
|
|
public Dictionary<string, object> DeferUpdate(Dictionary<string, object> jsonResult)
|
|
{
|
|
OlapDataManager DataManager = new OlapDataManager(connectionString);
|
|
DataManager.SetCurrentReport(OLAPUTILS.Utils.DeserializeOlapReport(jsonResult["currentReport"].ToString()));
|
|
return htmlHelper.GetJsonData(jsonResult["action"].ToString(), connectionString, DataManager, null, jsonResult["filterParams"].ToString(), jsonResult.ContainsKey("gridLayout") ? jsonResult["gridLayout"].ToString() : null);
|
|
}
|
|
|
|
private OlapReport CreateOlapReport()
|
|
{
|
|
OlapReport olapReport = new OlapReport();
|
|
olapReport.CurrentCubeName = "Adventure Works";
|
|
olapReport.EnablePaging = true;
|
|
olapReport.PagerOptions.SeriesPageSize = 5;
|
|
olapReport.PagerOptions.CategoricalPageSize = 5;
|
|
|
|
DimensionElement dimensionElement = new DimensionElement() { Name = "Customer" };
|
|
dimensionElement.AddLevel("Customer", "Customer");
|
|
olapReport.CategoricalElements.Add(dimensionElement);
|
|
|
|
DimensionElement dimensionElementRow = new DimensionElement() { Name = "Customer", HierarchyName = "Customer" };
|
|
dimensionElementRow.AddLevel("Customer Geography", "Country");
|
|
olapReport.SeriesElements.Add(dimensionElementRow);
|
|
|
|
MeasureElements measureElementColumn = new MeasureElements();
|
|
measureElementColumn.Elements.Add(new MeasureElement { Name = "Internet Sales Amount" });
|
|
olapReport.CategoricalElements.Add(measureElementColumn);
|
|
|
|
return olapReport;
|
|
}
|
|
}
|
|
} |