There probably aren't good reasons why you are building this this way. What are those reasons?
Anyhow, if you are just dumping a string into the browser, you really can't add controls. Now, if you were dynamically building ASP.NET table rows/cells, you could add the button to the cell's controls collection.
The reason I feel this is the best way to create this table is because there are certain checks that are done for each item in almost all the columns, depending on the outcome of what is in the column will determine what goes in there. Before each row is created there is also a test done whic determines the css, and on some of the cells this is repeated.