我有一个网格和一个图表。我需要将网格(现在正在工作)导出到excel中,但也包括图表。
所以我使用grid export excel方法并将图表(以及其他参数)作为这样的数据传递:
var data = { “ClientID”:$ scope.Model.ClientID, .... “Chart”:JSON.stringify($(“#MyChart”)。ejChart(“instance”),getCircularReplacer()) };
var grid = $("#" + table).ejGrid("instance");
grid.export(url);
并将其作为字符串传递给控制器,以便将其转换为chartproperties
[System.Web.Http.ActionName("ExcelExport")]
[HttpPost]
public ActionResult ExportToExcel()
{
string EJChart = _dictParams["Chart"].ToString();
ChartProperties cprop = MyGridHelper.ConvertChartObject(EJChart);
}
我从here获取的convertchart对象的代码:
转换后,当我尝试查找我需要在c#中绘制图表的系列,图例,点时,都没有值。似乎没有使用转换器。
所以稍微挖掘一下,看看那些是在模型中(json EJChart中的一个项目),但它一直说不能转换为null,所以我添加了null处理程序,它跳过了项目,使得它更值为null
底线: 如何使用js控制器中的c#获取图表的属性和值,但是使用网格导出而不是图表导出?示例代码假定导出将是ejchart,但我尝试将ejgrid与图表一起导出,因此我必须将其作为数据参数传递。
为什么转换器无法获取值,但我可以在json中看到它作为param传递,如下所示:
{"dragSettings":{"enable":false,"type":"xy"},"type":"column","splitMode":"value","splitValue":null,"splineType":"natural","cardinalSplineTension":0.5,"gapWidth":50,"pieOfPieCoefficient":0.6,"visibleOnLegend":"visible","enableAnimation":false,"animationDuration":null,"animationType":"linear","isClosed":true,"isTransposed":false,"isStacking":false,"columnWidth":0.7,"columnSpacing":0,"columnFacet":"rectangle","drawType":"line","doughnutCoefficient":0.4,"explodeOffset":25,"pyramidMode":"linear","boxPlotMode":"exclusive","funnelWidth":"11.6%","funnelHeight":"32.7%","positiveFill":null,"showMedian":true,"outlierSettings":{"shape":"circle","size":{"width":6,"height":6}},"cornerRadius":{"topLeft":0,"topRight":0,"bottomLeft":0,"bottomRight":0},"connectorLine":{"width":1,"opacity":1,"dashArray":null,"color":"#565656"},"errorBar":{"visibility":"hidden","mode":"vertical","type":"fixedValue","horizontalErrorValue":1,"verticalErrorValue":3,"horizontalPositiveErrorValue":1,"horizontalNegativeErrorValue":1,"verticalPositiveErrorValue":5,"verticalNegativeErrorValue":5,"direction":"both","cap":{"visible":true,"width":1,"length":20,"fill":"#000000"},"width":1,"opacity":1,"fill":"#000000"}
另外,在调试时,我看到系列,点等都在EJChart的模型中。
答案 0 :(得分:0)
我们使用ajax为您的要求准备了一个样本。我们将Chart对象转换为json字符串并通过AJAX传递给控制器。在转换json之前,必须将chart.model.event设置为null。此事件API用于内部目的。现在我们可以使用convertchart方法使用此JSON获取图表属性。
请找到下面的代码段,为事件设置null。
var chart = $("#ChartObject").ejChart("instance");
chart.model.event = null;
var chartJson = JSON.stringify(chart.model);
您可以从以下链接找到供您参考的样本, http://www.syncfusion.com/downloads/support/directtrac/202840/ze/export-1342070198 如果您有任何疑虑,请回复我们。
谢谢,
婴儿。