/// <summary> /// 创建分析报表中维度列的呈现器函数 /// </summary> /// <param name="pDrilledColumn">钻取的列</param> /// <param name="pOtherColumns">其他作为筛选条件的维度列</param> /// <param name="pMultiDrillJSFunctionName">多维度钻取的函数名</param> /// <param name="pLoadingMessage">执行Ajax请求时的加载中的信息</param> /// <returns></returns> public static JSFunction CreateDimColumnRenderer(DimColumn pDrilledColumn, DimColumn[] pOtherColumns, string pMultiDrillJSFunctionName = "__fnAnalysisReportMultiDrill", string pLoadingMessage = "数据加载中,请稍后...") { JSFunction script = new JSFunction(); script.Type = JSFunctionTypes.Variable; script.FunctionName = string.Format("fn{0}Renderer", pDrilledColumn.ColumnID); //定义函数的参数列表 script.Params = new List <string>(); script.Params.Add("pVal"); script.Params.Add("pMetaData"); script.Params.Add("pRecord"); script.Params.Add("pRowIndex"); script.Params.Add("pColIndex"); script.Params.Add("pStore"); script.Params.Add("pView"); //定义函数体 script.AddSentence("//设置多维度钻取的参数"); script.AddSentence("var params={};"); script.AddSentence("params.DimColumnID ={0}{1}{0};", JSONConst.STRING_WRAPPER, pDrilledColumn.ColumnID); script.AddSentence("params.DimValue=pRecord.get({0}{1}{0});", JSONConst.STRING_WRAPPER, pDrilledColumn.ColumnID); script.AddSentence("params.DimText=pRecord.get({0}{1}{0});", JSONConst.STRING_WRAPPER, pDrilledColumn.GetTextColumnID()); if (pOtherColumns != null) { script.AddSentence("params.DrillingItems=new Array();"); int i = 0; foreach (var dim in pOtherColumns) { script.AddSentence("var item{0}={{}};", i.ToString()); script.AddSentence("item{2}.DimColumnID={0}{1}{0};", JSONConst.STRING_WRAPPER, dim.ColumnID, i.ToString()); script.AddSentence("item{2}.DimValue=pRecord.get({0}{1}{0});", JSONConst.STRING_WRAPPER, dim.ColumnID, i.ToString()); script.AddSentence("item{2}.DimText=pRecord.get({0}{1}{0});", JSONConst.STRING_WRAPPER, dim.GetTextColumnID(), i.ToString()); script.AddSentence("params.DrillingItems.push(item{0});", i.ToString()); i++; } } script.AddSentence("if (window.___MultiDrillingParams == null)"); script.AddSentence(" window.___MultiDrillingParams = {};"); script.AddSentence("window.___MultiDrillingParams[pRowIndex.toString()] = params;"); script.AddSentence("//生成链接"); script.AddSentence("var html = '';"); script.AddSentence("html += '<a style=\"color:#666;text-decoration:underline;\" href=\"javascript:{0}(window.___MultiDrillingParams['+pRowIndex.toString()+']);\">' + params.DimText + '</a>';", pMultiDrillJSFunctionName); script.AddSentence("return html;"); // return(script); }
/// <summary> /// 创建查看明细的JS函数 /// </summary> /// <param name="pAjaxHandlerUrl">Ajax请求的url</param> /// <param name="pDrilledDim">需要钻取的维度列</param> /// <param name="pOtherDim">其他的维度列</param> /// <param name="pMultiDrillJSFunctionName">多维度钻取的函数名</param> /// <param name="pFunctionName">函数的名称</param> /// <param name="pLoadingMessage">执行Ajax请求时的加载中的信息</param> /// <returns></returns> public static JSFunction CreateViewDetail(string pAjaxHandlerUrl, DimColumn pDrilledDim, DimColumn[] pOtherDim, string pMultiDrillJSFunctionName = "__fnAnalysisReportMultiDrill", string pFunctionName = "__fnAnalysisReportViewDetail", string pLoadingMessage = "数据加载中,请稍后...") { JSFunction script = new JSFunction(); script.Type = JSFunctionTypes.Common; script.FunctionName = pFunctionName; //定义函数的参数列表 script.Params = new List <string>(); script.Params.Add("item"); script.Params.Add("e"); // script.AddSentence("var menu =item.parentMenu;"); script.AddSentence("var clickRecord =menu.___current_record;"); script.AddSentence("if(clickRecord){"); script.AddSentence(" var params={};"); script.AddSentence(" params.DimColumnID ={0}{1}{0};", JSONConst.STRING_WRAPPER, pDrilledDim.ColumnID); script.AddSentence(" params.DimValue=clickRecord.get({0}{1}{0});", JSONConst.STRING_WRAPPER, pDrilledDim.ColumnID); script.AddSentence(" params.DimText=clickRecord.get({0}{1}{0});", JSONConst.STRING_WRAPPER, pDrilledDim.GetTextColumnID()); if (pOtherDim != null) { script.AddSentence(" params.DrillingItems=new Array();"); int i = 0; foreach (var dim in pOtherDim) { script.AddSentence(" var item{0}={{}};", i.ToString()); script.AddSentence(" item{2}.DimColumnID={0}{1}{0};", JSONConst.STRING_WRAPPER, dim.ColumnID, i.ToString()); script.AddSentence(" item{2}.DimValue=clickRecord.get({0}{1}{0});", JSONConst.STRING_WRAPPER, dim.ColumnID, i.ToString()); script.AddSentence(" item{2}.DimText=clickRecord.get({0}{1}{0});", JSONConst.STRING_WRAPPER, dim.GetTextColumnID(), i.ToString()); script.AddSentence(" params.DrillingItems.push(item{0});", i.ToString()); i++; } } script.AddSentence(" {0}(params);", pMultiDrillJSFunctionName); script.AddSentence("}"); // return(script); }