protected void EmptyGridFix(GridView grdView) { // normally executes after a grid load method if (grdView.Rows.Count == 0 && grdView.DataSource != null) { DataTable dt = null; // need to clone sources otherwise it will be indirectly adding to // the original source if (grdView.DataSource is DataSet) { dt = ((DataSet)grdView.DataSource).Tables[0].Clone(); } else if (grdView.DataSource is DataTable) { dt = ((DataTable)grdView.DataSource).Clone(); } if (dt == null) { return; } dt.Rows.Add(dt.NewRow()); // add empty row grdView.DataSource = dt; grdView.DataBind(); // hide row grdView.Rows[0].Visible = false; grdView.Rows[0].Controls.Clear(); } // normally executes at all postbacks if (grdView.Rows.Count == 1 && grdView.DataSource == null) { bool bIsGridEmpty = true; // check first row that all cells empty for (int i = 0; i < grdView.Rows[0].Cells.Count; i++) { if (grdView.Rows[0].Cells[i].Text != string.Empty) { bIsGridEmpty = false; } } // hide row if (bIsGridEmpty) { grdView.Rows[0].Visible = false; grdView.Rows[0].Controls.Clear(); } } }