- How to remove the whole first column in the GridView when the value of the DropDownList Filter is rather than ALL?
- <asp:DropDownList ID="ddlDivision" runat="server" AppendDataBoundItems="True"
- AutoPostBack="True" DataSourceID="sqlDataSourceDivision" DataTextField="DivisionName"
- DataValueField="DivisionName"
- Width="275px" EnableViewState="False">
- <asp:ListItem Value="%">All</asp:ListItem>
- </asp:DropDownList>
- <br /> <br />
- <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
- <ItemTemplate>
- <asp:HiddenField ID="HiddenField1" runat="server" Value='<%# Eval("GroupID")%>' />
- <asp:SqlDataSource ID="SqlDataSource1" runat="server"
- ConnectionString="<%$ ConnectionStrings:testConnectionString %>"
- SelectCommandType="StoredProcedure" SelectCommand="kbiReport"
- FilterExpression="[DivisionName] like '{0}%'">
- <FilterParameters>
- <asp:ControlParameter ControlID="ddlDivision" Name="DivisionName"
- PropertyName="SelectedValue" Type="String" />
- </FilterParameters>
- <SelectParameters>
- <%--ControlParameter is linked to the HiddenField above to generate different GridView based on different values
- of GroupID--%>
- <asp:ControlParameter ControlID="HiddenField1" Name="GroupID" PropertyName="Value" />
- </SelectParameters>
- </asp:SqlDataSource>
- <div style="width:700px; overflow:auto; overflow-y:hidden;">
- <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">
- <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
- <HeaderStyle Font-Bold = "true" ForeColor="Black"/>
- <Columns>
- </Columns>
- <EditRowStyle BackColor="#999999" />
- <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
- <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
- <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
- <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
- <SortedAscendingCellStyle BackColor="#E9E7E2" />
- <SortedAscendingHeaderStyle BackColor="#506C8C" />
- <SortedDescendingCellStyle BackColor="#FFFDF8" />
- <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
- </asp:GridView>
- </div>
- <br />
- </ItemTemplate>
- </asp:Repeater>
- <asp:SqlDataSource ID="SqlDataSource1" runat="server"
- ConnectionString="<%$ ConnectionStrings:testConnectionString %>"
- SelectCommand="SELECT DISTINCT GroupID FROM courses">
- </asp:SqlDataSource>
- <%--Filtering by Division--%>
- <asp:SqlDataSource ID="sqlDataSourceDivision" runat="server"
- ConnectionString="<%$ ConnectionStrings:testConnectionString %>"
- SelectCommand="SELECT [DivisionName] FROM [Divisions]"></asp:SqlDataSource>
- 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 > 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 = "•";
- }
- 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 < e.Row.Cells.Count; i++)
- e.Row.Cells[i].BackColor = System.Drawing.Color.LightBlue;
- break;
- case "2":
- for (int i = 4; i < e.Row.Cells.Count; i++)
- e.Row.Cells[i].BackColor = System.Drawing.Color.LightYellow;
- break;
- case "3":
- for (int i = 4; i < 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 > 0)
- {
- gv.UseAccessibleHeader = true;
- gv.HeaderRow.TableSection = TableRowSection.TableHeader;
- }
- }
- 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 > 0)
- gv.Columns[0].Visible = false;
- else
- {
- gv.HeaderRow.Cells[0].Visible = false;
- foreach (GridViewRow gvr in gv.Rows)
- {
- gvr.Cells[0].Visible = false;
- }
- }
- }
- }
- }
- }
- if (ddlDivision.SelectedValue == "ALL") { // hide column 0 }
- if (ddlDivision.SelectedValue != "ALL") { // hide column 0 }
- protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
- {
- ...
- if (e.Row.RowType != DataControlRowType.Pager)
- {
- if (ddlDivision.SelectedItem.Text != "ALL")
- {
- // only check for pager row, all other rows including header/footer should be hidden
- e.Row.Cells[0].Visible = false;
- }
- }
- ...
- }