I want that check box in header row automatically checked when all data row of gridview are checked.
What I have tried:
<asp:GridView ID="gv" Width="90%" runat="server" Visible="false" AutoGenerateColumns="false"
PageSize="51" OnRowDataBound="gv_RowDataBound" OnPageIndexChanging="gv_PageIndexChanging" >
<Columns>
<asp:TemplateField HeaderText="S.no" ItemStyle-Width="5%">
<ItemTemplate>
<%#Container.DataItemIndex+1 %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="FPS Code" ItemStyle-Width="20%">
<ItemTemplate>
<asp:Literal ID="lblCode" runat="server" Text='<%#Eval("Code")%>'></asp:Literal>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Details" ItemStyle-Width="20%">
<ItemTemplate>
<asp:Label ID="lblDetails" runat="server" Text='<%#Eval("Details")%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="DBT Option" ItemStyle-Width="20%">
<HeaderTemplate>
<asp:CheckBox ID="chkboxSelectAll" runat="server" AutoPostBack="true" OnCheckedChanged="chkboxSelectAll_CheckedChanged" />
</HeaderTemplate>
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
<ItemTemplate>
<asp:CheckBox ID="chkFPS" runat="server" AutoPostBack="true" OnCheckedChanged="chkFPS_CheckedChanged" /> </ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataTable dt = ViewState["dt"] as DataTable;
string lblCode = ((Literal)e.Row.FindControl("lblCode")).Text;
CheckBox ChkBoxRows = (CheckBox)e.Row.FindControl("chkFPS");
DataRow[] row = dt.Select("FPS_Code='" + lblCode + "'", "FPSDBT");
if (row[0]["FPSDBT"].ToString() == "Yes")
ChkBoxRows.Checked = true;
else
ChkBoxRows.Checked = false;
}
else if (e.Row.RowType == DataControlRowType.Header)
{
bool flage = true;
DataTable dt = ViewState["dt"] as DataTable;
CheckBox chkboxSelectAll= (CheckBox)e.Row.FindControl("chkboxSelectAll");
DataRow[] row = dt.Select("1=1", "FPSDBT");
for (int j = 0; j < row.Length; j++)
{
if (row[j]["FPSDBT"].ToString() == "No")
{
flage = false;
break;
}
}
if (flage)
chkboxSelectAll.Checked = true;
}
}
protected void gv_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
try
{
BindGridView_gv();
grdFPSDBT.PageIndex = e.NewPageIndex;
grdFPSDBT.DataBind();
}
catch (Exception ex)
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "temp", "<script language='javascript'>alert('Some internal error occurred. Please try after some time. !!! ');</script>", false);
}
}
It is running fine.
But when record number more than 51 is "No"
i.e. row[52]["FPSDBT"] is "No". Means 52th record is not checked.
then I want check box("chkboxSelectAll") in header row in page number 1 (51 records) should be checked
and check box("chkboxSelectAll") in page number 2 should not be checked.