title: System.IndexOutOfRangeException : Cannot find table 0
body: <p>I am trying to implement a <code>button_click</code> event in C# such that if the button is pressed, the gridview is filled with the query results but am getting the above error. </p>
  
  <p>This is the code:</p>
  
  <pre><code>public partial class Pages_Managingpayment : System.Web.UI.Page
  {
      SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyServer"].ConnectionString);
      protected void Page_Load(object sender, EventArgs e)
      {
  
          if(IsPostBack)
          {
              Load();
      }
      }
      protected void Load() {
          DataSet ds = new DataSet();
          ds.Tables[0].Rows.Add(ds.Tables[0].NewRow());
          GridView1.DataSource = ds;
          GridView1.DataBind();
          int columncount = GridView1.Rows[0].Cells.Count;
          GridView1.Rows[0].Cells.Clear();
          GridView1.Rows[0].Cells.Add(new TableCell());
          GridView1.Rows[0].Cells[0].ColumnSpan = columncount;
          GridView1.Rows[0].Cells[0].Text = "No records on display";
      }
      protected void SearchButton_Click(object sender, EventArgs e)
      {
          if (IsPostBack)
          {
              BindEmployeeDetails();
          }
      }
      protected void BindEmployeeDetails()
      {
          con.Open();
          SqlCommand cmd = new SqlCommand("Select * from users", con);
          SqlDataAdapter da = new SqlDataAdapter(cmd);
          DataSet ds = new DataSet();
          da.Fill(ds);
          con.Close();
          if (ds.Tables[0].Rows.Count &gt; 0)
          {
              GridView1.DataSource = ds;
              GridView1.DataBind();
          }
          else
          {
              ds.Tables[0].Rows.Add(ds.Tables[0].NewRow());
              GridView1.DataSource = ds;
              GridView1.DataBind();
              int columncount = GridView1.Rows[0].Cells.Count;
              GridView1.Rows[0].Cells.Clear();
              GridView1.Rows[0].Cells.Add(new TableCell());
              GridView1.Rows[0].Cells[0].ColumnSpan = columncount;
              GridView1.Rows[0].Cells[0].Text = "No Records Found";
          }
      }
      protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
      {
          GridView1.EditIndex = e.NewEditIndex;
          BindEmployeeDetails();
      }
      protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
      {
          //int userid = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value.ToString());
          string passwords = GridView1.DataKeys[e.RowIndex].Value.ToString();
          TextBox pass = (TextBox)GridView1.Rows[e.RowIndex].FindControl("Password");
          TextBox usernames = (TextBox)GridView1.Rows[e.RowIndex].FindControl("username");
          TextBox usertypes = (TextBox)GridView1.Rows[e.RowIndex].FindControl("usertype");
          con.Open();
          SqlCommand cmd = new SqlCommand("update users set User_Type='" + usertypes.Text + "',Username='" + usernames.Text + "' where password='" + passwords + "'", con);
          cmd.ExecuteNonQuery();
          con.Close();
          //.ForeColor = Color.Green;
          //lblresult.Text = username + " Details Updated successfully";
          GridView1.EditIndex = -1;
          BindEmployeeDetails();
      }
      protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
      {
          GridView1.EditIndex = -1;
          BindEmployeeDetails();
      }
      protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
      {
          //int userid = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Values["UserId"].ToString());
          string passwords = GridView1.DataKeys[e.RowIndex].Values["password"].ToString();
          con.Open();
          SqlCommand cmd = new SqlCommand("delete from users where password='" + passwords + "'", con);
          int result = cmd.ExecuteNonQuery();
          con.Close();
          if (result == 1)
          {
              BindEmployeeDetails();
              // lblresult.ForeColor = Color.Red;
              //lblresult.Text = username + " details deleted successfully";
          }
      }
      protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
      {
          if (e.CommandName.Equals("AddNew"))
          {
              TextBox usertypes = (TextBox)GridView1.FooterRow.FindControl("usertype");
              TextBox usernames = (TextBox)GridView1.FooterRow.FindControl("username");
              TextBox passwords = (TextBox)GridView1.FooterRow.FindControl("password");
              con.Open();
              SqlCommand cmd =
              new SqlCommand(
              "insert into users values('" + usertypes.Text + "','" +
              usernames.Text + "','" + passwords.Text + "')", con);
              int result = cmd.ExecuteNonQuery();
              con.Close();
              if (result == 1)
              {
                  BindEmployeeDetails();
                  // lblresult.ForeColor = Color.Green;
                  //lblresult.Text = txtUsrname.Text + " Details inserted successfully";
              }
              else
              {
                  //lblresult.ForeColor = Color.Red;
                  //lblresult.Text = txtUsrname.Text + " Details not inserted";
              }
          }
      }
  </code></pre>