Please compare your code and my reply code. You can also use AsyncPostBackTrigger.
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server" AllowSorting="True" OnSorting="GridView1_Sorting"
AutoGenerateColumns="False" CellPadding="5">
<Columns>
<asp:BoundField DataField="ProductID" SortExpression="ProductID" HeaderText="Product ID"
HeaderStyle-HorizontalAlign="Left" />
<asp:BoundField DataField="ProductName" SortExpression="productname" HeaderText="Product"
HeaderStyle-HorizontalAlign="Left" />
<asp:BoundField DataField="UnitPrice" SortExpression="unitprice" HeaderText="Price"
HeaderStyle-HorizontalAlign="Left" />
</Columns>
</asp:GridView>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="GridView1" />
</Triggers>
</asp:UpdatePanel>
Or you can do this from code behind also in page load.
ScriptManager.GetCurrent(Page).RegisterAsyncPostBackControl(this.GridView1);
Try it.
Thank You.