How to remove the whole first column in the GridView when the value of the DropDownList Filter is rather than ALL?
<p>I have the following complicated asp.net code structure:</p>

<ol>
<li>DropDownList as a Filter</li>
<li>Repeater</li>
<li>And inside the Repeater: I have HiddenField and GridView</li>
</ol>

<p>I want when the value of Filter is setting to All, the fist column should be removed. The problem is I am using a StoredProcedure that takes care for generating three GridViews and this way I put the GridView inside the Repeater. </p>

<p>The ASP.NET code:</p>

<pre><code>&lt;asp:DropDownList ID="ddlDivision" runat="server" AppendDataBoundItems="True" 
        AutoPostBack="True" DataSourceID="sqlDataSourceDivision" DataTextField="DivisionName" 
        DataValueField="DivisionName"  
        Width="275px" EnableViewState="False"&gt;
        &lt;asp:ListItem Value="%"&gt;All&lt;/asp:ListItem&gt;
    &lt;/asp:DropDownList&gt;


     &lt;br /&gt;  &lt;br /&gt;  
        &lt;asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1"&gt;
            &lt;ItemTemplate&gt;

                &lt;asp:HiddenField ID="HiddenField1" runat="server" Value='&lt;%# Eval("GroupID")%&gt;' /&gt;

                &lt;asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                                    ConnectionString="&lt;%$ ConnectionStrings:testConnectionString %&gt;" 
                                    SelectCommandType="StoredProcedure" SelectCommand="kbiReport"
                                    FilterExpression="[DivisionName] like '{0}%'"&gt;

                    &lt;FilterParameters&gt;
                        &lt;asp:ControlParameter ControlID="ddlDivision" Name="DivisionName" 
                                                 PropertyName="SelectedValue" Type="String" /&gt;
                    &lt;/FilterParameters&gt;

                    &lt;SelectParameters&gt;
                        &lt;%--ControlParameter is linked to the HiddenField above to generate different GridView based on different values 
                            of GroupID--%&gt;
                        &lt;asp:ControlParameter ControlID="HiddenField1" Name="GroupID" PropertyName="Value" /&gt;
                    &lt;/SelectParameters&gt;
                &lt;/asp:SqlDataSource&gt;
                &lt;div style="width:700px; overflow:auto; overflow-y:hidden;"&gt;

                &lt;asp:GridView ID="GridView1" runat="server" 
                                AllowSorting="True" 
                                CellPadding="3" 
                                DataSourceID="SqlDataSource1" 
                                ClientIDMode="Static" class="fixedTables" Width="600" AutoGenerateColumns="true"
                                AlternatingRowStyle-CssClass="alt"
                                RowStyle-HorizontalAlign="Center" 
                                OnRowDataBound="GridView1_RowDataBound" OnPreRender="GridView1_PreRender" OnRowCreated="GridView1_RowCreated"
                                OnDataBound="GridView1_DataBound"&gt;
                    &lt;AlternatingRowStyle BackColor="White" ForeColor="#284775" /&gt;
                    &lt;HeaderStyle Font-Bold = "true" ForeColor="Black"/&gt; 
                    &lt;Columns&gt;
                    &lt;/Columns&gt;
                    &lt;EditRowStyle BackColor="#999999" /&gt;
                    &lt;FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /&gt;
                    &lt;PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /&gt;
                    &lt;RowStyle BackColor="#F7F6F3" ForeColor="#333333" /&gt;
                    &lt;SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /&gt;
                    &lt;SortedAscendingCellStyle BackColor="#E9E7E2" /&gt;
                    &lt;SortedAscendingHeaderStyle BackColor="#506C8C" /&gt;
                    &lt;SortedDescendingCellStyle BackColor="#FFFDF8" /&gt;
                    &lt;SortedDescendingHeaderStyle BackColor="#6F8DAE" /&gt;
                &lt;/asp:GridView&gt;
                &lt;/div&gt;
                &lt;br /&gt;
            &lt;/ItemTemplate&gt;
        &lt;/asp:Repeater&gt;

        &lt;asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                           ConnectionString="&lt;%$ ConnectionStrings:testConnectionString %&gt;"
                           SelectCommand="SELECT DISTINCT GroupID FROM courses"&gt;
        &lt;/asp:SqlDataSource&gt;

        &lt;%--Filtering by Division--%&gt;
        &lt;asp:SqlDataSource ID="sqlDataSourceDivision" runat="server" 
        ConnectionString="&lt;%$ ConnectionStrings:testConnectionString %&gt;" 
        SelectCommand="SELECT [DivisionName] FROM [Divisions]"&gt;&lt;/asp:SqlDataSource&gt;
</code></pre>

<p>The code-behind:</p>

<pre><code>protected void Page_Load(object sender, EventArgs e)
    {

        //Repeater1.DataBind();


    }


    //protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    //{
    //    if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
    //    {
    //        GridView gv = e.Item.FindControl("GridView1") as GridView;
    //        if (gv != null)
    //        {

    //            gv.DataBind();
    //            if (ddlDivision.SelectedValue != "ALL")
    //            {
    //                if (gv.Columns.Count &gt; 0)
    //                    gv.Columns[0].Visible = false;
    //                else
    //                {
    //                    gv.HeaderRow.Cells[0].Visible = false;
    //                    foreach (GridViewRow gvr in gv.Rows)
    //                    {
    //                        gvr.Cells[0].Visible = false;
    //                    }
    //                }
    //            }

    //        }
    //    }

    //}



    //protected void ddlDivision_SelectedIndexChanged(object sender, EventArgs e)
    //{
    //    if (ddlDivision.SelectedItem.Text == "All")
    //    {
    //        GridView1.Columns[0].Visible = true;
    //    }
    //    else
    //    {
    //        GridView1.Columns[0].Visible = false;
    //    }
    //}

    //This method is for deleting the first column in the GridView
    protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
    {
       // e.Row.Cells[0].Visible = false; // hides the first column
    }

    protected void GridView1_DataBound(object sender, EventArgs e)
    {
        //GridView GridView1 = (GridView)sender;
        //foreach (GridViewRow gvr in GridView1.Rows)
        //{
        //    if (ddlDivision.SelectedValue != "All")
        //    {
        //        gvr.Cells[0].Visible = false;

        //    }
        //}




    }


    //This function is for checking each cell in each row. 
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        //var gv = sender as GridView;
        //if (ddlDivision.SelectedValue == "All")
        //    gv.Columns[0].Visible = false;

        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            foreach (TableCell c in e.Row.Cells)
            {
                // Check if the cell vlaue = Yes
                // if it is Yes, the cell will be colored with Light Green 
                if (c.Text.Contains(", Yes"))
                {
                    c.BackColor = System.Drawing.Color.LightGreen;
                    c.Text = "&amp;bull;";
                }
                else if (c.Text.Contains(", NO"))
                {

                    c.Text = "";
                }
            }
        }

         //The following is for changing the color of headers in each GridView based on the value of the HiddenFild 
         //BTW, the value of the HiddenField is the value of the GroupID in Group Table in the Database 
        else if (e.Row.RowType == DataControlRowType.Header)
        {
            switch (((HiddenField)((GridView)sender).Parent.FindControl("HiddenField1")).Value)
            {
                case "1":
                    for (int i = 4; i &lt; e.Row.Cells.Count; i++)
                        e.Row.Cells[i].BackColor = System.Drawing.Color.LightBlue;
                    break;

                case "2":
                    for (int i = 4; i &lt; e.Row.Cells.Count; i++)
                        e.Row.Cells[i].BackColor = System.Drawing.Color.LightYellow;
                    break;

                case "3":
                    for (int i = 4; i &lt; e.Row.Cells.Count; i++)
                        e.Row.Cells[i].BackColor = System.Drawing.Color.Orange;
                    break;
            }
        }

    }


    protected void GridView1_PreRender(object sender, EventArgs e)
    {
        var gv = sender as GridView;
        if (gv.Rows.Count &gt; 0)
        {
            gv.UseAccessibleHeader = true;
            gv.HeaderRow.TableSection = TableRowSection.TableHeader;
        }
    }
</code></pre>

<p>I did many tries but I failed in all of them as you see in the above behind-code. The last try was:</p>

<pre><code>protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
    {
        GridView gv = e.Item.FindControl("GridView1") as GridView;
        if (gv != null)
        {

            gv.DataBind();
            if (ddlDivision.SelectedValue != "ALL")
            {
                if (gv.Columns.Count &gt; 0)
                    gv.Columns[0].Visible = false;
                else
                {
                    gv.HeaderRow.Cells[0].Visible = false;
                    foreach (GridViewRow gvr in gv.Rows)
                    {
                        gvr.Cells[0].Visible = false;
                    }
                }
            }

        }
    }

}
</code></pre>

<p>and I failed. <strong>Could anyone help me with this issue?</strong></p>
