first check weather you are getting id on your page or not. if yes then check ProductID column of product table is of nvarchar type or numeric.
Because i think that you are passing string ID in table and that is of numeric type so there is mismatch of type.
private void LoadGridView()
{
if (Request.QueryString["ID"] != null && Request.QueryString["ID"].ToString() != "")
{
string query = "Select * from Products where ProductID= " + Convert.ToInt32(Request.QueryString["ID"].ToString()) + " AND UnitCost < 5000";
DataSet dss = obj.fillgrid(query);
GridView1.DataSource = dss.Tables[0];
GridView1.DataBind();
}
Hope this will help you.
Don't forget to mark as answer if it helps. :)