IE9中的Ghost单元与Repeater Control

时间:2013-03-12 11:28:39

标签: c# asp.net internet-explorer-9

IE9生成空白单元格,或者您可以使用ASP.Net Repeater控件来说Ghost Cell。 我尝试javascript regural表达。渲染函数以运行reg。进出口。但该页面包含很少的更新控件并生成错误。

错误:sys.webforms.pagerequestmanagerservererrorexception消息 从服务器收到的邮件无法解析。的ScriptResource.axd

我为这个错误尝试了所有众所周知的链接。 如果你真的有......请建议我。

谢谢

protected override void Render(HtmlTextWriter writer)
    {
      using (HtmlTextWriter htmlwriter = new HtmlTextWriter(new System.IO.StringWriter()))
      {
        base.Render(htmlwriter);
        string html = htmlwriter.InnerWriter.ToString();
         if ((ConfigurationManager.AppSettings.Get("RemoveWhitespace") + string.Empty).Equals("true", StringComparison.OrdinalIgnoreCase))
          {
            //html = Regex.Replace(html, @"(?<=[^])\t{2,}|(?<=[>])\s{2,}(?=[<])|(?<=[>])\s{2,11}(?=[<])|(?=[\n])\s{2,}", string.Empty);
            html = Regex.Replace(html, @"(?<=<td[^>]*>)(?>\s+)(?!<table)|(?<!</table>\s*)\s+(?=</td>)", string.Empty);
            html = html.Replace(";\n", ";");
          }
         writer.Write(html.Trim());
      }

另一种解决方案是,但转发器失败

var expr = new RegExp('>[ \t\r\n\v\f]*<', 'g'); 
document.body.innerHTML = document.body.innerHTML.replace(expr, '><'); 

3 个答案:

答案 0 :(得分:0)

您可以直接访问Repeater控件(在它写入页面并由IE呈现之前)并根据索引删除单元格。

答案 1 :(得分:0)

需要删除“&lt; / td&gt;”之间的空格和“&lt; td&gt;”。

答案 2 :(得分:0)

IE9浏览器中进行渲染时,在html表格中阻止不需要的单元格,找到了一个非常有用的脚本。

function removeWhiteSpaces()
{
   $('#myTable').html(function(i, el) {
      return el.replace(/>\s*</g, '><');
   });
}

这个javascript函数应该在页面加载时调用(即onload事件)