Как считать количество строк в jqGrid?

Здесь приведен практический пример вложенного класса, который может дать вам представление об их использовании (добавлен некоторый модульный тест)

namespace CoreLib.Helpers
{
    using System;
    using System.Security.Cryptography;

    public static class Rnd
    {
        private static readonly Random _random = new Random();

        public static Random Generator { get { return _random; } }

        static Rnd()
        {
        }

        public static class Crypto
        {
            private static readonly RandomNumberGenerator _highRandom = RandomNumberGenerator.Create();

            public static RandomNumberGenerator Generator { get { return _highRandom; } }

            static Crypto()
            {
            }

        }

        public static UInt32 Next(this RandomNumberGenerator value)
        {
            var bytes = new byte[4];
            value.GetBytes(bytes);

            return BitConverter.ToUInt32(bytes, 0);
        }
    }
}

[TestMethod]
public void Rnd_OnGenerator_UniqueRandomSequence()
{
    var rdn1 = Rnd.Generator;
    var rdn2 = Rnd.Generator;
    var list = new List<Int32>();
    var tasks = new Task[10];
    for (var i = 0; i < 10; i++)
    {
        tasks[i] = Task.Factory.StartNew((() =>
        {
            for (var k = 0; k < 1000; k++)
            {
                lock (list)
                {
                    list.Add(Rnd.Generator.Next(Int32.MinValue, Int32.MaxValue));
                }
            }
        }));
    }
    Task.WaitAll(tasks);
    var distinct = list.Distinct().ToList();
    Assert.AreSame(rdn1, rdn2);
    Assert.AreEqual(10000, list.Count);
    Assert.AreEqual(list.Count, distinct.Count);
}

[TestMethod]
public void Rnd_OnCryptoGenerator_UniqueRandomSequence()
{
    var rdn1 = Rnd.Crypto.Generator;
    var rdn2 = Rnd.Crypto.Generator;
    var list = new ConcurrentQueue<UInt32>();
    var tasks = new Task[10];
    for (var i = 0; i < 10; i++)
    {
        tasks[i] = Task.Factory.StartNew((() =>
        {
            for (var k = 0; k < 1000; k++)
            {
                    list.Enqueue(Rnd.Crypto.Generator.Next());
            }
        }));
    }
    Task.WaitAll(tasks);
    var distinct = list.Distinct().ToList();
    Assert.AreSame(rdn1, rdn2);
    Assert.AreEqual(10000, list.Count);
    Assert.AreEqual(list.Count, distinct.Count);
}
27
задан Justin Ethier 14 October 2009 в 14:24
поделиться

3 ответа

jQuery("#myGrid").jqGrid('getGridParam', 'records');

Обновление

Обратите внимание, что есть два параметра для определения количества записей:

записи

целое число

Свойство только для чтения. Дает количество записей, возвращенных в результате запроса к серверу.


reccount

integer

Свойство Readonly. Определяет точное количество строк в сетке. Не путайте это с параметром записей . Хотя во многих случаях они могут быть равными, есть случаи, когда это не так. Например, если вы определяете rowNum равным 15, но запрос к серверу возвращает 20 записей, параметр records будет равен 20, но параметр reccount будет равен 15 (в сетке будет 15 записей, а не 20).

53
ответ дан 28 November 2019 в 04:44
поделиться

Как насчет этого?

jQuery("#myGrid tr").length;

На самом деле, вы можете сделать еще один шаг с дополнительным параметром контекста.

jQuery("tr", "#myGrid").length;

Любой из них будет искать каждый "tr" внутри "#myGrid" . Однако, судя по моему собственному тестированию, определение параметра контекста обычно выполняется быстрее.

1
ответ дан 28 November 2019 в 04:44
поделиться

Вот код, который у меня есть. Похоже, должен быть способ получше:

jQuery("#myGrid").getDataIDs().length;
0
ответ дан 28 November 2019 в 04:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: