2017-04-03 66 views
1

我有一个包含198个项目的SharePoint 2010列表。前30项Text to Html Javascript函数成功将文本代码转换为Html,但是当我试图选择接下来的31个项目并使用分页继续时,该函数无法转换Html并仅显示文本代码。有谁能让代码方便地完成这项工作?以下是SharePoint 2010中使用的代码。谢谢。Sharepoint 2010中的文本到Html转换

<script type="text/javascript"> 
function TextToHTML(NodeSet, HTMLregexp) { 
var CellContent = ""; 
var i=0; 
while (i < NodeSet.length){ 
try { 
CellContent = NodeSet[i].innerText || NodeSet[i].textContent; 
if (HTMLregexp.test(CellContent)) {NodeSet[i].innerHTML = CellContent;} 
} 
catch(err){} 
i=i+1; 
} 
} 

// Calendar views 
var regexpA = new RegExp("\\s*<([a-zA-Z]*)(.|\\s)*/\\1?>\\s*"); 
TextToHTML(document.getElementsByTagName("a"),regexpA); 

// List views 
var regexpTD = new RegExp("^\\s*<([a-zA-Z]*)(.|\\s)*/\\1?>\\s*$"); 
TextToHTML(document.getElementsByTagName("TD"),regexpTD); 

// This function is call continuesly every 100ms until the length of the main field changes 
// after which the convert text to HTML is executed. 
// 
var postElemLength = 0; 
function PostConvertToHtml() 
{ 
    if (postElemLength == document.getElementsByTagName("TD").length) 
    { 
      setTimeout(PostConvertToHtml,100); 
    } 
    else 
    { 
      var regexpTD = new RegExp("^\\s*<([a-zA-Z]*)(.|\\s)*/\\1?>\\s*$"); 
      TextToHTML(document.getElementsByTagName("TD"),regexpTD); 
    } 
} 

// Grouped list views 
ExpGroupRenderData = (function (old) { 
    return function (htmlToRender, groupName, isLoaded) { 

    var result = old(htmlToRender, groupName, isLoaded); 
    var regexpTD = new RegExp("^\\s*<([a-zA-Z]*)(.|\\s)*/\\1?>\\s*$"); 
    TextToHTML(document.getElementsByTagName("TD"),regexpTD); 

    // start the periodic callback to check when the element has been changed 
    if(isLoaded == 'false') 
     { 
     postElemLength = document.getElementsByTagName("TD").length; 
     setTimeout(PostConvertToHtml,100); 
     } 
    }; 
})(ExpGroupRenderData); 

// Preview pane views 
if (typeof(showpreview1)=="function") { 
showpreview1 = (function (old) { 
    return function (o) { 
    var result = old(o); 
    var regexpTD = new RegExp("^\\s*<([a-zA-Z]*)(.|\\s)*/\\1?>\\s*$"); 
    TextToHTML(document.getElementsByTagName("TD"),regexpTD); 
    }; 
})(showpreview1); 
}</script> 

以下是生成的文本代码,需要转换为Html。谢谢。

="<div style='position:relative;display:inline-block;width:100%;'> 
    <div style='width:100%;display:inline-block;text-align:center;border:1px solid "&Project_Status_clr&";position:absolute;color:"&Project_Status_clr&";'> "&Project_Status&" 
    </div> 
    <div style='display:inline-block;width: 100%;background-color:"&Project_Status_clr&";text-align:center;border:1px solid;z-index:-1;filter:alpha(opacity=20);opacity:0.2;'>"&Project_Status&" 
    </div> 
</div>" 
+0

您可能执行的工作量超过必要量。你有没有尝试改变计算列有一个返回类型的“数字”,而不是(大概)“字符串”?这通常足以呈现HTML。 – Thriggle

+0

嗨非常感谢您的帮助。真的很有效.. –

+0

太棒了!我将添加它作为答案。 – Thriggle

回答

0

当在计算列在SharePoint 2010中生成HTML的字符串,您可以更改计算列的值类型为“数”来获得HTML列表视图渲染。

+0

您好,我非常感谢您的以上建议。在这里,我再次陷入了我的项目。请你建议我怎样才能将文本字符串代码呈现为HTML,当我使用Office 365中的前一页单击下一页时。显然,我将计算列的值类型用于“数字”,但仍显示相同的文本字符串值。 –

+0

除了上面的评论,我已经使用了5个计算列和大约2200个项目,我需要将它正确地转换为HTML版本。谢谢.. –

+0

嗨,Barun,我建议在Office 365中问一个新问题,因为该解决方案可能会与SharePoint 2010中的问题不同。 – Thriggle