As with any dynamically create controls in ASP.NET they must be recreated at postback.
You could use a DataList or Repeater control and bind it to some data source, then when needed a new row you add it to the data source and let the ASP.NET rendering handle creating the actual row elements.
If there is no data a simpler way to add a new row to the DOM would be to use JavaScript and clone an existing one and insert it
<table>
<tr id='example'>
<td>Something...</td>
</tr>
</table>
var newRow = $("#example").clone();
$("#example").after(newRow);