2008-12-05 61 views
2

我有一个aspx页面,我正在处理大量的记录从表中做一些操作。每次操作后(每条记录),我有一个Response.Write(“记录:“+ rec); Response.Flush()Response.Flush不工作ASP.NET

我已经将Response.Buffer属性设置为false。 这是工作的罚款 但如果我想渲染输出作为一个表行,其未正常工作的Response.Write 的仅在循环fininshing所有记录后,该表是越来越印刷

如何解决这个 ?

回答

7

在表格完成之前,大多数浏览器都不会呈现表格。您可以尝试制作表格固定格式,c​​ss table-layout:fixed,以及指定列大小。

1

我会加入Darryl的答案,您可以尽快关闭表格,然后用JQuery或类似的方式填充表格的其余部分。

0

我猜想,在你写出结束表标记之前,表不存在于浏览器的角度。

你可以用样式表写出一堆div来控制它们的宽度。

.column1 { width: 40px; } 
.column2 { width: 40px; } 

Response.Write("<div id=\"column1\">some text</div><div id=\"column2\">some text</div>"); 
Response.Flush(); 

或者你可以写出每行的整个表...?

Response.Write("<table><tr><td>some text</td></tr></table>"); 
Response.Flush(); 
0

确定的表格。为了证明这一点,改变你的面向表格标记的response.Write()是纯文本。你会看到它积累。如果表格必须是这么大,并且您想从服务器渲染它,则应该修复列大小并将表格分成一行或一些其他子集,以便内容逐渐显示。

15

其他任何人有这个问题...

请注意,如果您的IIS服务器压缩用gzip输出,那么它似乎忽略所有Response.Flush电话。这在默认情况下在IIS7和Windows 7中打开。

而且,如果您正在使用Fiddler进行测试,请务必打开“Streaming”模式,否则Fiddler将收集刷新的HTML并保留它直到连接成功完成。