you are adding textbox control to row but what about requiredFieldValidator?
i think it should also be added. and secondly, as Abhinav said, use textbox id instead of object you created...
row.controls.add(tb);
RequiredFieldValidator rfv1= new RequiredFieldValidator();
row.controls.add(rfv1);
rfv1.ControlToValidate= tb.ID;