Use TemplateField
instead of the BoundField
<asp:TemplateField HeaderText="Calculation">
<ItemTemplate>
<asp:TextBox ID="tb" runat="server"
Text='<% ((Convert.ToDecimal(Eval("Amount"))/Convert.ToDecimal(Eval("Total")))*Convert.ToDecimal(100)).ToString() %>' >
</asp:TextBox>
</ItemTemplate>
</asp:TemplateField>