SujataJK Ответов: 0

Как поддерживать состояние и количество флажков подкачки 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) {
$('#&lt;%=gvAppvrDetail.ClientID %>').find("input:checkbox").each(функция () {
если (это != chk) {
this.checked = chk.checked;
}
});
CheckBoxCount1();
}
функция CheckBoxCount1() {
var gv = document.getElementById("&lt;%= gvAppvrDetail.ClientID %>");
ВАР inputList = гв.метод getelementsbytagname("ввод");
var numChecked = -1;

for (var i = 0; i &lt; inputList.length; i++) {
если (inputList[я].тип == "флажок" и усилитель; & inputList[я].проверено) {
numChecked = numChecked + 1;
}
}
var label = document.getElementById("&lt;%=lblcntrow.ClientID %>");

метки.innerHTML будет = numChecked;
document.getElementById("&lt;%=lblcntrow.Идентификатора ClientID %и GT;").значение = этикетке.innerHTML будет;

}


функция CheckBoxCount() {
var gv = document.getElementById("&lt;%= gvAppvrDetail.ClientID %>");
ВАР inputList = гв.метод getelementsbytagname("ввод");
var numChecked = 0;

for (var i = 0; i &lt; inputList.length; i++) {
если (inputList[я].тип == "флажок" и усилитель; & inputList[я].проверено) {
numChecked = numChecked + 1;
}
}

var label = document.getElementById("&lt;%=lblcntrow.ClientID %>");

метки.innerHTML будет = numChecked;

document.getElementById("&lt;%=lblcntrow.Идентификатора ClientID %и GT;").значение = этикетке.innerHTML будет;
}

Sinisa Hajnal

Пройдитесь по коду и посмотрите, когда счет будет потерян. Попробуйте использовать сеанс вместо состояния просмотра. Код выглядит нормально на быстром проходе

Laxmidhar tatwa technologies

сэр войти в состояние вида, если хотите хранить в сессии объект
Я думаю, что ваша проблема будет решена

SujataJK

я попытался использовать сеанс вместо viewstate, но проблема осталась прежней.

SujataJK

спасибо всем.
Я решил эту проблему.В приведенном выше случае я просто забыл установить свойство autopostback="true" флажка.

0 Ответов