Вы можете использовать эту маленькую функцию:
public static void ShowNoResultFound(DataTable source, GridView gridView)
{
DataTable t = source.Clone();
foreach (DataColumn c in t.Columns)
c.AllowDBNull = true;
t.Rows.Add(t.NewRow());
gridView.DataSource = t;
gridView.DataBind();
gridView.Rows[0].Visible = false;
gridView.Rows[0].Controls.Clear();
}
А потом, когда вы получаете данные из sql или другого источника данных, вы делаете это:
if (dSet.Tables[0].Rows.Count > 0)
{
GridView1.DataSource = dSet.Tables[0];
GridView1.DataBind();
}
else
{
ShowNoResultFound(dSet.Tables[0], GridView1);
}