Как поддерживать состояние и количество флажков подкачки gridview в ASP.NET с#
Привет,
Здесь я хочу поддерживать состояние и количество флажков gridview во время подкачки. то есть я хочу показать (нет) строк, выбранных из gridview.
Смотрите следующий код он показывает только количество страниц, что означает, что предположим, что выбраны 2 записи на 1-й странице и 4 записи на 2-й странице, а затем он показывает 2 на первой странице и 4 на 2-й странице.
здесь я хочу показать общее количество выбранных записей .то есть на 1-й странице это будет 2, а на 2-й-6.
Что я уже пробовал:
<asp:GridView ID="gvAppvrDetail" runat="server" AutoGenerateColumns="False" AllowPaging="true" PageSize="10" Width="1000PX" onpageindexchanging="gvAppvrDetail_PageIndexChanging" onrowdatabound="gvAppvrDetail_RowDataBound" > <Columns> <asp:TemplateField> <HeaderTemplate> <asp:CheckBox ID="ChkAll" runat="server" onclick="javascript:SelectAllCheckboxes(this);" > </asp:CheckBox> </HeaderTemplate> <ItemTemplate> <asp:CheckBox ID="ChkChild" runat="server" onclick="CheckBoxCount();" OnCheckedChanged="ChkChild_CheckedChanged" > </asp:CheckBox> </ItemTemplate> </asp:TemplateField>
</Columns>
</asp:GridView>
и Кодекс чести
gvAppvrDetail_PageIndexChangingкак это
protected void gvAppvrDetail_PageIndexChanging(object sender, GridViewPageEventArgs e) { gvAppvrDetail.PageIndex = e.NewPageIndex; BindGridview(Request.QueryString["PREFIX"].ToString()); //Code to maintain selected record while paging if (ViewState["SelectedRows"] != null) { List<string> selectedItems = (List<string>)ViewState["SelectedRows"]; foreach (GridViewRow row in gvAppvrDetail.Rows) { Label lblEntryNo = (Label)row.FindControl("lblEntryNo"); var result = selectedItems.Find(item => item == lblEntryNo.Text); if (result != null) { CheckBox chk = (CheckBox)row.FindControl("ChkChild"); if (chk != null) { chk.Checked = true; ViewState["Count"] = Convert.ToInt32(ViewState["Count"]) + 1; lblcntRows.Text = ViewState["Count"].ToString(); } } } } //BindGridview(Request.QueryString["PREFIX"].ToString()); }
и Кодекс чести
ChkChild_CheckedChangedкак это
protected void ChkChild_CheckedChanged(object sender, EventArgs e) { CheckBox chkStatus = (CheckBox)sender; GridViewRow selectedrow = (GridViewRow)chkStatus.NamingContainer; //Getting selected records from View state List<string> selectedItems = null; if (ViewState["SelectedRows"] != null) { selectedItems = (List<string>)ViewState["SelectedRows"]; } else { selectedItems = new List<string>(); } Label lblEntryNo = (Label)selectedrow.FindControl("lblEntryNo"); if (chkStatus.Checked) { selectedItems.Add(lblEntryNo.Text); } else { var result = selectedItems.Find(item => item == lblEntryNo.Text); if (result != null) { selectedItems.Remove(lblEntryNo.Text); } } //Assigning Selected records to ViewState ViewState["SelectedRows"] = selectedItems; }
Пожалуйста, помогите мне.
SujataJK
см. следующий код javascript для count(выбранные записи)
функция SelectAllCheckboxes(chk) {
$('#<%=gvAppvrDetail.ClientID %>').find("input:checkbox").each(функция () {
если (это != chk) {
this.checked = chk.checked;
}
});
CheckBoxCount1();
}
функция CheckBoxCount1() {
var gv = document.getElementById("<%= gvAppvrDetail.ClientID %>");
ВАР inputList = гв.метод getelementsbytagname("ввод");
var numChecked = -1;
for (var i = 0; i < inputList.length; i++) {
если (inputList[я].тип == "флажок" и усилитель; & inputList[я].проверено) {
numChecked = numChecked + 1;
}
}
var label = document.getElementById("<%=lblcntrow.ClientID %>");
метки.innerHTML будет = numChecked;
document.getElementById("<%=lblcntrow.Идентификатора ClientID %и GT;").значение = этикетке.innerHTML будет;
}
функция CheckBoxCount() {
var gv = document.getElementById("<%= gvAppvrDetail.ClientID %>");
ВАР inputList = гв.метод getelementsbytagname("ввод");
var numChecked = 0;
for (var i = 0; i < inputList.length; i++) {
если (inputList[я].тип == "флажок" и усилитель; & inputList[я].проверено) {
numChecked = numChecked + 1;
}
}
var label = document.getElementById("<%=lblcntrow.ClientID %>");
метки.innerHTML будет = numChecked;
document.getElementById("<%=lblcntrow.Идентификатора ClientID %и GT;").значение = этикетке.innerHTML будет;
}
Sinisa Hajnal
Пройдитесь по коду и посмотрите, когда счет будет потерян. Попробуйте использовать сеанс вместо состояния просмотра. Код выглядит нормально на быстром проходе
Laxmidhar tatwa technologies
сэр войти в состояние вида, если хотите хранить в сессии объект
Я думаю, что ваша проблема будет решена
SujataJK
я попытался использовать сеанс вместо viewstate, но проблема осталась прежней.
SujataJK
спасибо всем.
Я решил эту проблему.В приведенном выше случае я просто забыл установить свойство autopostback="true" флажка.