Link to home
Start Free TrialLog in
Avatar of DowntownIT
DowntownITFlag for United States of America

asked on

Hide column names in gridview

I have Gridview where the first 4 columns are link buttons, next 6 columns come from the database and then I add 2 more columns to the datatable that is bound to the gridview.

I am trying to hide a couple of the columns from the db from the user but still need to access their values in the codebehind. I would perfer to hide these columns by name.

Thanks for the help.
Avatar of bitref
bitref
Flag of United States of America image

You may get all data in a datatable then create a dataview to include required data onle. Set the dataviewas the data source for the grid.
Avatar of DowntownIT

ASKER

I don't see a way to remove or hide columns from the dataview. Is there a way?
Grid1.Columns("columnname").Visible = false
This doesn't work for me. When I supply the index of the column, I get an index out of range. Trying it with the name as suggested, I get a conversion from string to integer error.

The index is zero-based. So, try to subtract 1 from the column order.
I did do that, The grid in the designer only has 4 columns but then I add more columns from the server side through the datatable. It is these columns that I need access to. I am able to hide any of the first 4 with no problems.
Avatar of Mlanda T
Hide the columns in the RowDataBound event for the grid.

        protected void GridViewResults_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            e.Row.Cells[0].Visible = false;
        }

Open in new window


Finding the column index might be a bit tricky, but you perhaps use something like this:

NumberOfFixedGridColumns + myTable.Columns.IndexOf(NameOfColumnToHide)

e.g.  e.Row.Cells[4 + myTable.Columns.IndexOf["ContractValue"]].Visible = false;

MlandaT,

Looks like this is almost there, I am getting an index out of range error. Looks like maybe paging is causing an issue. When I step through the code, I don't get the error until to what it looks like to be the footer where the pages are at. Does this sound right?
ASKER CERTIFIED SOLUTION
Avatar of Mlanda T
Mlanda T
Flag of South Africa image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
That worked except that I changed it to look for the DataControlRowType.Pager row.

Thanks for the help!