Как подсчитать отмеченные флажки на всех страницах сетки, используя jquery? - PullRequest
1 голос
/ 14 января 2009

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

Вот мой код:

$(document).ready(initAll);

function initAll(){
   countChecked();
    $(".activeBoxes").click(countChecked);
}

function countChecked() {

      var n = $(".activeBoxes input:checked").length;
      $("#checkboxStatus").text(n + (n == 1 ? " vehicle is" : " vehicles are") + " selected on this page.  ");
      if( n == 0){
           $(".activateButton").hide();
           $("#checkboxStatus").hide();

      }else{
        $("#checkboxStatus").show();
        $(".activateButton").show();
      }

}

Ответы [ 5 ]

0 голосов
/ 15 января 2009

Сохраняйте скрытое текстовое поле на своей странице, и каждый раз, когда вы устанавливаете флажок, вызывайте метод javascript, который будет записывать 'id' флажка в скрытое поле. Каждый раз, когда вы отправляете свою страницу обратно, сериализуйте значение скрытого поля в сеансе в нужной структуре объектов (будь то объекты, хеш-таблица, массив и т. Д.).

После рендеринга страницы каждый флажок может проверить структуру объекта сеанса (который вы создали ранее) и определить, был ли последний флажок проверен или нет.

Вы можете использовать JQuery для обхода всех флажков на странице и увеличения счетчика, если флажок установлен.

0 голосов
/ 15 января 2009

Знаете ли вы, что Google - ваш друг?

Выбор флажков внутри GridView с помощью JQuery

Видео WML

И без JQuery, но для более перфекционистского поведения (как на картинке ниже), попробуйте эту ссылку

альтернативный текст http://www.gridviewguy.com/ArticleImages/GridViewCheckBoxTwistAni.gif

0 голосов
/ 14 января 2009

Я использую состояние просмотра, чтобы отслеживать все отмеченные элементы на всех страницах и перепроверять их по возвращении на страницу.

Мне нужно будет добавить мое значение viewstate к общему количеству страниц и каким-то образом вычесть перекрывающиеся итоги. Поскольку в моем jquery нет идентификатора, это будет сложно.

protected ArrayList savedIds;
 if (ViewState["SavedIds"] == null) savedIds = new ArrayList();
        else savedIds = (ArrayList)ViewState["SavedIds"];

List<int> activateList = new List<int>();

        foreach (GridViewRow tt in GridView2.Rows)
        {
            CheckBox cb = (CheckBox)tt.FindControl("ActivateItem");
            HiddenField id = (HiddenField)tt.FindControl("IdField");
            if (cb.Checked)
            {
                int tempId = 0;
                string tempId2 = id.Value.ToString();
                int.TryParse(tempId2, out tempId);
                activateList.Add(tempId);
            }

        }
        foreach (int activateId in activateList)
        {
            if (!savedIds.Contains(activateId.ToString())) savedIds.Add(activateId.ToString());
        }
        ViewState["SavedIds"] = savedIds;
0 голосов
/ 14 января 2009

Что вам не хватает, так это удаление идентификатора. При проверке строк и не проверять tempid убедитесь, что это не в saveids.

0 голосов
/ 14 января 2009

Вы можете отслеживать общий выбор в viewstate (или что-то подобное) при смене страницы. Я сделал нечто подобное, отслеживая выбранные идентификаторы строк в массиве. В моем случае мне пришлось перепроверить вещи, когда они вернулись на страницу. Кроме того, если вы разрешите сортировку, выделение может перемещаться по страницам.

Редактировать: Извините, это на самом деле не ваш вопрос Jquery, но, возможно, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...