KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm having a problem dynamically adding columns to a GridView. I need to change the layout -- i.e. the included columns -- based on the value in a DropDownList. When the user changes the selection in this list, I need to remove all but the first column and dynamically add additional columns based on the selection. I have only one column defined in my markup -- column 0, a template column, in which I declare a Select link and another application specific LinkButton. That column needs to always be there. When the ListBoxSelection is made, I remove all but the first column and then re-add the desired columns (in this sample, I've simplified it to always add a "Title" column). Here is a portion of the code: RemoveVariableColumnsFromGrid(); BoundField b = new BoundField(); b.DataField = "Title"; this.gvPrimaryListView.Columns.Add(b); this.gvPrimaryListView.DataBind(); private void RemoveVariableColumnsFromGrid() { int ColCount = this.gvPrimaryListView.Columns.Count; //Leave column 0 -- our select and view template column while (ColCount > 1) { this.gvPrimaryListView.Columns.RemoveAt(ColCount - 1); --ColCount; } } The first time this code runs through, I see both the static column and the dynamically added "Title" column. However, the next time a selection is made, the first column is generated empty (nothing in it). I see the title column, and I see the first column to its left -- but there's nothing generated within it. In the debugger, I can see that gvPrimaryListView does indeed still have two columns and the first one (index 0) is indeed a template column. In fact, the column even retains it's width which is set as 165px in the markup below (for debugging purposes). Any ideas? <asp:GridView ID="gvPrimaryListView" runat="server" Width="100%" AutoGenerateColumns="false" DataKeyNames="Document_ID" EnableViewState="true" DataSourceID="odsPrimaryDataSo
Tags (comma-separated)
Save Edits
Cancel