surikarthi Ответов: 2

Состояние флажков при подкачке страниц в элементе управления GridView


Привет!

У меня есть некоторые проблемы с CheckBox в GridView с управлением подкачкой...

У меня есть один GridView с CheckBox и пейджинговый контроль...
Когда я выбираю CheckBox на первой странице и выбрав нужный CheckBox в пейджинге 2 и скоро..



Мне нужна сумма сколько CheckBoxЭс я выбрал в GridView с контролем подкачки..

Может кто-нибудь помочь мне с этой проблемой, пожалуйста, я пытаюсь с 2-х дней вперед...

Nelek

А что вы уже пробовали? Опубликуйте немного своего кода, чтобы люди могли сказать вам, где находится ошибка. Это поможет вам учиться.

2 Ответов

Рейтинг:
2

bbirajdar

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

Редактировать:

В событии checkbox_checked на стороне сервера обновите счетчик, поддерживаемый в переменной сеанса. Это событие срабатывает при каждом установленном-снятом флажке.


surikarthi

его обновление флажка независимо от того, выбран он или нет , но мне нужно количество проверенных элементов..., его подсчет снова и снова выбранных элементов...

bbirajdar

Вы использовали переменную сеанса, которая будет увеличиваться или уменьшаться после каждой проверки?

surikarthi

я подстроил код, где я использовал seesion в коде для увеличения количества флажков в приведенном выше коде, который я опубликовал ранее...

но из-за этого его подсчета флажок проверял элементы снова и снова...

Например,
когда я нажимаю индекс подкачки 1 - он подсчитывает флажок, который установлен..
и когда я нажимаю индекс подкачки 2 - там тоже его подсчет идет правильно..
но моя проблема заключается в том, что когда я возвращаюсь к подкачке 1, чтобы установить еще один флажок, он снова подсчитывает предыдущий флажок...

surikarthi

пожалуйста, кто-нибудь собирается дать мне предложение по этому вопросу...

bbirajdar

Это происходит потому, что вы написали логику обновления счетчика в событии GridView1_PageIndexChanging. Если вы написали то же самое в событии Checkbox_Checked, как вы думаете, будет ли эта логика подсчета выполняться в событии GridView1_PageIndexChanging? Конечно, нет.

Логика подсчета должна быть в событии checkbox_checked и не должна быть в событии GridView1_PageIndexChanging.

surikarthi

сэр, прежде чем я использовал этот счетчик в самом событии check box после этого я почувствовал в событии GridView1_PageIndexChanging его сохранение статуса checkbox checked или нет через этот сеанс это может помочь для подсчета checkbox checked я хотя и поместил после этого, но там также была показана та же проблема, с которой я столкнулся в checkbox_event

Рейтинг:
1

surikarthi

protected void GridView1_PreRender(object sender, EventArgs e)
 {

     if (Session["page" + GridView1.PageIndex] != null)
     {
         int count = Convert.ToInt32(ViewState["total"]);
         CheckBox chb;
         bool[] values = (bool[])Session["page" + GridView1.PageIndex];

         for (int i = 0; i < GridView1.Rows.Count; i++)
         {
             chb = (CheckBox)GridView1.Rows[i].FindControl("chkStatus");

             chb.Checked = values[i];

         }

     }
 }





охраняемых недействительными GridView1_PageIndexChanging(объект отправителя, GridViewPageEventArgs е)
{


Ответ.Напишите (GridView1.Pageindex было.Метод toString());
инт д = gridview1, на.PageCount;
типа bool[] значения = новое значение bool[управления gridview1.Страницы];

Флажок ЧБ;
int count = преобразовать.ToInt32(ViewState ["total"]);
for (int i = 0; i <GridView1. Rows.Граф; i++)
{
ЧБ = (флажок)управления gridview1.Строки[я].FindControl("chkStatus");

if (chb != null)
{
значения[i] = chb.Проверен;
считать++;
}
}
Сессия ["страница" + GridView1.PageIndex] = значения;





Управления gridview1.PageIndex = e. NewPageIndex;
DataTable dtPagination = ((DataTable)Session ["details"]);
DataView dvPagination = новый DataView(dtPagination);
GridView1. DataSource = dtPagination;
Управления gridview1.Привязку();

}


я использую эти два события, я могу проверить флажок в подкачке, но я хочу знать, сколько флажков я проверил в целом gridview с помощью управления подкачкой.....


bbirajdar

Ваш код неверен

Так и должно быть

<asp:TemplateField HeaderText= "View">
& lt;itemtemplate>
&ЛТ;АСП:чекбокс с ID="chkview" атрибут runat="сервер" autopostback элемента управления="истинный" OnCheckedChanged="chkview_CheckedChanged" /&ГТ;




охраняемых недействительными chkview_CheckedChanged(объект отправителя, EventArgs в электронной)
{
if ((отправитель как флажок).Проверено= = верно)
{
Преобразовать.ToInt32 (Session["counter"])++;
}
еще
{
Преобразовать.ToInt32(сессия ["счетчик"])--;
}
}

surikarthi

сэр, если я использую ваш код, то он также подсчитывает проверенные значения снова и снова..

например..
Индекс подкачки 1 в представлении сетки я поставил флажок 1 и перешел к следующему индексу подкачки в представлении сетки, чтобы выбрать другой флажок... здесь total =2 его правильно..

Но когда я возвращаюсь к индексу подкачки 1, чтобы проверить другой флажок, на самом деле он должен показывать total=3, но он показывает total =4... это означает, что он снова подсчитывает предыдущий установленный флажок..

bbirajdar

"Но когда я возвращаюсь к индексу подкачки 1, чтобы проверить другой флажок, на самом деле он должен показывать total=3, но он показывает total =4... значит, его подсчет снова предыдущий проверенный флажок.. " .. Ок.. я внимательно прочитал этот пункт. Означает ли это, что событие chkview_CheckedChanged также запускается при изменении индекса страницы? - Тогда это странно. В идеале этого не должно быть. Событие флажка срабатывает только на Включить/выключить. Подсказка: пожалуйста, проверьте aspx, если это событие chek_checked вызывается из любого другого места по ошибке

bbirajdar

Когда вы вернетесь на предыдущую страницу, событие GridView1_PageIndexChanging будет запущено и снова подсчитает проверенные элементы, которые уже были подсчитаны. Потому что вы написали код подсчета в событии GridView1_PageIndexChanging.Независимо от того, что он будет делать это снова и снова и снова каждый раз, когда gridview1_pageindexchanging запускается.
Логика подсчета должна быть на самом деле в событии chekbox_checkedChanged.

surikarthi

ha я удалил из GridView1_PageIndexChanging и использовал подсчет только в событии chekbox_checkedChanged.. тогда тоже та же проблема..

surikarthi

это когда я нажимаю кнопку Проверить все опции в виде сетки...