I am looping through two input controls of type file with this function.\[code\]protected void btnUpload_Click(object sender, EventArgs e){ HttpFileCollection hfc = Request.Files; int numFiles = hfc.Count; for (int i = 0; i < hfc.Count; i++) { HttpPostedFile hpf = hfc; string FilePath = hpf.FileName; CreateProgress(FilePath, i + 1, numFiles); Thread.Sleep(2000); }}\[/code\]At this stage I am doing nothing with the files, I just want to prove that after uploading each file I can write something to the browser to let the user know the files are being uploaded. The function CreateProgress is this:\[code\]public void CreateProgress(string FilePath, int i, int numFiles){ StringBuilder sbProgress = new StringBuilder(); string strTableId = "mainTable" + i; sbProgress.Append("<html><head><link rel=\"StyleSheet\" href=http://stackoverflow.com/"stylesheet/StyleSheet1.css\" type=\"text/css\" /></head><body>"); sbProgress.Append("<table id=\"" + strTableId + "\" border=\"0\">"); sbProgress.Append("<tr>"); sbProgress.Append("<td>"); sbProgress.Append("<p class=\"filey\">Uploading " + FilePath + " ..... file " + i.ToString() + " of " + numFiles.ToString() + "</p>"); sbProgress.Append("</td>"); sbProgress.Append("<td style=\"display:none\">"); sbProgress.Append("</td>"); sbProgress.Append("</tr>"); sbProgress.Append("</table>"); sbProgress.Append("</body></html>"); HttpContext.Current.Response.Write(sbProgress.ToString()); HttpContext.Current.Response.Flush();}\[/code\]The code as above works perfectly every time. I click to upload the files and on the screen it shows 'Uploading SomeFile.txt ... file 1 of 2' for 2 seconds and then 'Uploading SomeOtherFile.txt ... file 2 of 2' for 2 seconds.But, you'll see in the code building the StringBuilder that I am constructing a table with one row and two cells. I don't need or use the second cell in the row but if I delete it by commenting out three lines like this ...\[code\] public void CreateProgress(string FilePath, int i, int numFiles){ StringBuilder sbProgress = new StringBuilder(); string strTableId = "mainTable" + i; sbProgress.Append("<html><head><link rel=\"StyleSheet\" href=http://stackoverflow.com/"stylesheet/StyleSheet1.css\" type=\"text/css\" /></head><body>"); sbProgress.Append("<table id=\"" + strTableId + "\" border=\"0\">"); sbProgress.Append("<tr>"); sbProgress.Append("<td>"); sbProgress.Append("<p class=\"filey\">Uploading " + FilePath + " ..... file " + i.ToString() + " of " + numFiles.ToString() + "</p>"); //sbProgress.Append("</td>"); //sbProgress.Append("<td style=\"display:none\">"); //sbProgress.Append("</td>"); sbProgress.Append("</tr>"); sbProgress.Append("</table>"); sbProgress.Append("</body></html>"); HttpContext.Current.Response.Write(sbProgress.ToString()); HttpContext.Current.Response.Flush();}\[/code\]... then, when the Upload button is clicked - nothing happens at first, then the second message shows on the screen (Uploading file 2 of 2). Why on earth does commenting out three lines so that the second cell in the row is not created cause it to stop working properly?In fact, if I leave the 3 lines in and remove the 'style="display:none"' from the td tag - it does not work properly. Put the style="display:none" back in and it works fine.In actual fact I don't want to really create a table at all. I have tried removing the lot and simply doing this:\[code\] StringBuilder sbProgress = new StringBuilder(); sbProgress.Append("<html><head><link rel=\"StyleSheet\" href=http://stackoverflow.com/"stylesheet/StyleSheet1.css\" type=\"text/css\" /></head><body>"); sbProgress.Append("<p class=\"filey\">Uploading " + FilePath + " ..... file " + i.ToString() + " of " + numFiles.ToString() + "</p>"); sbProgress.Append("</body></html>"); HttpContext.Current.Response.Write(sbProgress.ToString()); HttpContext.Current.Response.Flush();}\[/code\]but this does not work either. The first message 'Uploading file 1 of 2' does not appear, but the second one ('Uploading file 2 of 2') does appear.Any ideas? I'm thinking of becoming a taxi driver.