public void AddAbsoluteStartupScript(string script, int level) { AbsoluteScriptBlock scriptBlock = new AbsoluteScriptBlock(script, level); for (int i = 0; i < _startupAbsoluteScriptBlockList.Count; i++) { AbsoluteScriptBlock currentScript = _startupAbsoluteScriptBlockList[i]; if (scriptBlock.Level < currentScript.Level) { _startupAbsoluteScriptBlockList.Insert(i, scriptBlock); return; } } _startupAbsoluteScriptBlockList.Add(scriptBlock); }
/// <summary> /// 返回经过排序的 _startupControlScriptList 列表,子控件排在父控件的前面 /// </summary> /// <returns></returns> internal List <ScriptBlock> GetSortedControlScriptList() { List <ScriptBlock> result = new List <ScriptBlock>(); #region old code //if (!String.IsNullOrEmpty(_exclusiveScript)) //{ // result.Add(new ScriptBlock(null, _exclusiveScript)); // return result; //} #endregion #region 1.插入AbsoluteScript(Level<0) // Level的正值和负值的分割点 int levelZeroIndex = 0; // 插入所有 Control 为 null 的记录 for (levelZeroIndex = 0; levelZeroIndex < _startupAbsoluteScriptBlockList.Count; levelZeroIndex++) { AbsoluteScriptBlock controlScript = _startupAbsoluteScriptBlockList[levelZeroIndex]; if (controlScript.Level < 0) { //#if DEBUG // controlScript.Script = controlScript.Script; //#endif result.Add(new ScriptBlock(null, controlScript.Script)); } else { break; } } #endregion #region 2.排序,子控件排在父控件的前面 for (int i = 0, count = _startupScriptBlockList.Count; i < count; i++) { ScriptBlock controlScript = _startupScriptBlockList[i]; // Alert 静态类的 Control 为null if (controlScript.Control == null) { // 如果 Control 为null,则不处理这条记录 continue; } int insertIndex = GetInsertIndex(controlScript.Control, result); #region old code //#if DEBUG // // 在JS脚本前面增加 \t ,这样层次关系明显一点 // controlScript.Script = GetLineBreakString(insertIndex, result) + controlScript.Script; //#endif #endregion //#if DEBUG // if (!String.IsNullOrEmpty(controlScript.Script)) controlScript.Script = "\r\n" + controlScript.Script; // if (!String.IsNullOrEmpty(controlScript.ExtraScript)) controlScript.ExtraScript = "\r\n" + controlScript.ExtraScript; //#endif result.Insert(insertIndex, controlScript); } #endregion #region 计算渲染时间 //string timeScript ="X.endDateTime=new Date();"; //string totalTime = "'FineUI渲染时间:'+X.endDateTime.getElapsed(X.startDateTime)+'ms'"; //totalTime += "+'['+X.startPageLayoutDateTime.getElapsed(X.startDateTime)+','"; //totalTime += "+X.endPageLayoutDateTime.getElapsed(X.startPageLayoutDateTime)+']'"; //timeScript += String.Format("if(!X.startPageLayoutDateTime){{X.startPageLayoutDateTime=X.endPageLayoutDateTime=X.endDateTime;}}if(window.location.href.indexOf('DEBUG')>0){{alert({0});}}", totalTime); //result.Add(new ScriptBlock(null, "box_alertDEBUG();")); #endregion #region 4.插入AbsoluteScript(Level>0) // 插入所有 Control 为 null 的记录 for (levelZeroIndex = 0; levelZeroIndex < _startupAbsoluteScriptBlockList.Count; levelZeroIndex++) { AbsoluteScriptBlock controlScript = _startupAbsoluteScriptBlockList[levelZeroIndex]; if (controlScript.Level >= 0) { //#if DEBUG // controlScript.Script = "\r\n" + controlScript.Script; //#endif result.Add(new ScriptBlock(null, controlScript.Script)); } } #endregion return(result); }