something wrong with gridview

I have a gridview and I have a DB. In my task I bind GridView to DB and want to change the width of every column. 

dataAdapter = new SqlDataAdapter("SELECT *  FROM Turs", sqlcn);
dt = new DataTable("Turs");
dataAdapter.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();

 

If I add code into GridView1_RowDataBound, I get an error that: "Specified argument was out of the range of valid values. Parameter name: index". The trace of debugger shows me that GridView1 has only 1 column. Why? In DB I have 8 columns. 

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        e.Row.Cells[0].Width = 100;
        e.Row.Cells[1].Width = 150;
    }

Regards

Last updated:12/19/2014 6:38:44 AM

2 Answers

Anonymous User
Anonymous User

You need to check RowType in the GridView1_RowDataBound event.

Try this 

protected void GridView1_RowDataBound(object sender,GridViewRowEventArgs e)
{
        if(e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.Cells[0].Width = 100;
            e.Row.Cells[1].Width = 150;
        }
}

Anonymous User
Anonymous User

You should be doing it like this way instead by creating a DataSet 

DataSet ds = new DataSet();
dataAdapter.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();

Answer