I do not think it a good idea to have aspx textbox controls in your view I would rather use a regulat html textbox
<InsertItemTemplate>
<input type="txtName" id="txtName" name="fname">
</InsertItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="MainOrder">
<InsertItemTemplate>
<input type="TexMainOrder" id="TexMainOrder" name="fname">
</InsertItemTemplate>
item.ProductionOrderNo =collection["txtName"];
item.ProductionOrderNo = collection["TexMainOrder"];
even if you decide to use it you should add name and make it client id mode static
<asp:TextBox ID="txtName" name="txtName" clientIdMode="static" runat="server" ></asp:TextBox>
<asp:TextBox ID="TexMainOrder" name="TexMainOrder" ClientIdMode="static" runat="server" ></asp:TextBox>