Флажок в строке заголовка должен быть установлен, когда все строки данных проверяются в gridview
Я хочу, чтобы этот флажок в строке заголовка автоматически проверялся, когда проверяются все строки данных gridview.
Что я уже пробовал:
<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; //this table shows all record from data base and column "FPSDBT" shows that recored should be checked based on "FPSDBT" 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); } }
Он работает нормально.
Но когда рекордное число больше 51-это " нет"
т. е. подряд[52]["FPSDBT"] "нет". Значит, 52-я запись не проверена.
тогда я хочу, чтобы флажок ("chkboxSelectAll") в строке заголовка на странице № 1 (51 запись) был установлен
и флажок ("chkboxSelectAll") на странице № 2 не должен быть установлен.
ZurdoDev
Я не понимаю вашего вопроса.
Member 7909353
Столбец "FPSDBT" показывает, что запись datarow проверена или нет.
Если "FPSDBT" - это "да", то проверено другое мудрое не проверено.
Если у меня есть 100 записей и размер страницы равен 51.
предположим, что "FPSDBT" - это "нет" 52-й записи, тогда я хочу, чтобы флажок в строке заголовка был установлен на странице № 1, а не на странице № 2
ZurdoDev
Итак, реализуйте событие подкачки и снимите флажок.
saeed rajabi
взгляните http://stackoverflow.com/questions/15293641/asp-net-gridview-checkall-and-uncheckall-in-a-single-header-checkbox