Это потому, что вы перепривязываете при обратной передаче.Оберните код из вашего метода Page_Load следующим образом:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack
Dim query = From b In db.Bookings Where b.Approved = False And (From a In db.Approvers Where a.ApprovalStatus = False Select a.BookingID).Contains(b.BookingID) Select b.BookingID, b.DateRequired Distinct Order By DateRequired
BookingsGV.DataSource = query
BookingsGV.DataBind()
If ApproverList.Items.Count > 0 Then
DetailsPanel.Visible = True
Else
DetailsPanel.Visible = False
End If
End If
End Sub
Возможно, вам потребуется переместить оператор If, где вы измените видимость DetailsPanel, из оператора PostBack If.Трудно точно знать, что ты хочешь делать.