You could either do this on the client with some JavaScript, cloneNode. Or on the server with something like this
protected void OnButtonClick(...)
{
DropDownList ddl = new DropDownList();
Controls.Add(ddl);
TextBox txt = new TextBox();
Controls.Add(txt);
}
There is no need it either case to add more buttons. Keep in mind though with the server method you must keep track of and recreate each control that was dynamically added to the page.