powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / размер viewstate и datagrid
28 сообщений из 28, показаны все 2 страниц
размер viewstate и datagrid
    #33652843
puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня общий такой вопрос...

Какое разумное кол-во строк для datagrid стоит возвращать клиенту?
Ну и, собственно, хранить во viewstate?

У меня уже на 40 записях (правда, для каждой записи порядка 15 полей dataset) ощущается замедление скорости.

ViewState сжимается, но без сжатия он достаточно большой.
И на это сжатие - разжатие уходит несколько секунд.
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33652886
Ющенко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
puhhУ меня общий такой вопрос...

Какое разумное кол-во строк для datagrid стоит возвращать клиенту?
Ну и, собственно, хранить во viewstate?

У меня уже на 40 записях (правда, для каждой записи порядка 15 полей dataset) ощущается замедление скорости.

ViewState сжимается, но без сжатия он достаточно большой.
И на это сжатие - разжатие уходит несколько секунд.

а чем вызвана необходимость в ViewState хранить dataset?
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33652900
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут дело имхо не в viewstate a в пейджинге.
Используете ?
Вот здесь я сделал 30 строк, причем последний столбец совместимости расчетный. Выигрыш в скорости получил после отказа от штатного пейджинга.
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33652916
Dats
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоже боролся с этой проблемой. Посколько скорость загрузки на плохих каналах очень критична - запретил ViewState вообще.
Проще хранить DataTable в сессии. Тогда мы расходуем только память сервера, да и то не более 100 записей, т.к. постраничная выборка.
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33653037
Ющенко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DatsТоже боролся с этой проблемой. Посколько скорость загрузки на плохих каналах очень критична - запретил ViewState вообще.
Проще хранить DataTable в сессии. Тогда мы расходуем только память сервера, да и то не более 100 записей, т.к. постраничная выборка.

а не проще сделать кэширование данных? с точки зрения производительности это самый оптимальный вариант
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33653108
puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за внимание.
Ситуация такая:

2Dats:
ну в общем я тоже храню теперь datatable вместо dataset, и храню на сервере.
но не быстро все это получается.

2big-duke:
пейджинг - использую, куда ж без него.
можете подсказать, или ссылку кинуть на инфу, как обойтись без штатного пейджинга?

2Ющенко: храню viewstate, т.к. в гриде мне нужно, помимо пейджинга, редактировать, сохранять, обновлять, фильтровать...
если буду знать, как это сделать без viewstate - с удовольствием сделаю.

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

кроме того, помимо грида, есть несколько dropdownlist, которые хранят свое состояние. и я, честно говоря, не понимаю, как хранить это без viewstate - ну, например, если пользователь выбирает фильтры, то они не должны меняться при перезагрузке странички. тоже кэш?

буду очень признательно за несколько полезных ссылок - у самой ничего подходящего найти не получилось :(
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33653139
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
puhh
пейджинг - использую, куда ж без него.

Профиллером проверьте сколько времени занимает выборка. Штатный пейджер с сервера забирает весь набор данных. Т.е. если в таблице 1000 строк , а у вас пейджер с шагом в 40 строк, то все равно на сервер пойдет запрос на 1000 строк.
Выход - написать свой.
Хорошие статьи есть здесь .
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33653187
puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2big-duke:
на самом деле, с базой работа быстро происходит.
т.е. загрузить 100 строк - это все почти мгновенно.
а вот работать с ними потом - уже невозможно :(
в смысле, медленно.

если сменить фильтр (сотрудник), чтобы загрузить другие данные (где, например, 5 строк) - это тож медленно.
ну логично, так как уже ненужная таблица в prerender сначала во viewstate запихивается, а только потом запрос к базе идет.

в обратную сторону, к сотруднику с большим кол-вом строк (хотя 100 строк - ну не так уж это и много, вроде?), все происходит гораздо быстрее.
опять же, понятно, не нужно большую таблицу во viewstate запихивать.


непонятно наверно объясняю :-\


профайлер показывает большую трату времени на compress-decompress, serialize-deserialize.
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33653196
puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, ну и если цифрами говорить - размер странички, когда я сохраняю viewstate на ней, а не на сервере, да еще и не сжимаю его - 300-400 kb
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33653209
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> еще и не сжимаю его - 300-400 kb
жесть... а на прямую с сервером, на уровне запросом не пробывали работать?
про вью стэйт забудьте, если надо что-либо сохранить в коде страницы - делайте в ручную


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33653229
puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Profil:
ну когда она обработанная - она ж маленькая :) 1-2 kb
но на обработку все это время и тратится :(

я не понимаю, что значит - "делать вручную".
если у меня есть список сотрудников (допустим, 30 штук), и мне нужно сохранять состояние списка - что мне нужно будет делать, при отключенном viewstate?
завести какой-нить label, где хранить selectedindex в этом списке?


и как с гридом-то работать?
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33654030
Ющенко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
puhh

2Ющенко: храню viewstate, т.к. в гриде мне нужно, помимо пейджинга, редактировать, сохранять, обновлять, фильтровать...
если буду знать, как это сделать без viewstate - с удовольствием сделаю.

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

кроме того, помимо грида, есть несколько dropdownlist, которые хранят свое состояние. и я, честно говоря, не понимаю, как хранить это без viewstate - ну, например, если пользователь выбирает фильтры, то они не должны меняться при перезагрузке странички. тоже кэш?

буду очень признательно за несколько полезных ссылок - у самой ничего подходящего найти не получилось :(

насчет кэша проехали ......( я не понял идею)
впринципе big-duke прав нужно самому писать спец. элемент статьи на aspnetmania.com и тут sql.ru

Только я не совсем понял зачем хранить dropdownlist, тем более если они не встроены в ваш датагрид? они и так не меняются при перезагрузке
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33654039
Ющенко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
puhh2Profil:
ну когда она обработанная - она ж маленькая :) 1-2 kb
но на обработку все это время и тратится :(

я не понимаю, что значит - "делать вручную".
если у меня есть список сотрудников (допустим, 30 штук), и мне нужно сохранять состояние списка - что мне нужно будет делать, при отключенном viewstate?
завести какой-нить label, где хранить selectedindex в этом списке?


и как с гридом-то работать?

зы вообще для прояснения ситуации нужно чуть более подробное описание исходной задачи (ТЗ)....... а то какое-то гадание на кофейной гуще!

насчет запросов Profil в каком-то смысле прав ....... может попробуйте забыть про вью стейты и увеличить частоту запросов к СУБД........ рассмотрите такой вариант...... если хороший сервер, нормальная субд, не кривые запросы и структура БД можно добиться неплохой производительности.

зы если честно я изначально занимался администр-нием sql server-a а потом начал заниматься asp.net, потому стараюсь смотреть на проблему с разных сторон.
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33655709
puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Ющенко:
похоже, придется работать с запросами к базе - так значительно быстрее, это уже проверено.

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

по поводу dropdownlist - я имела в виду элементы, которые, как и грид, bind-ятся при первой загрузке.

------------
про саму задачку,
есть список сотрудников, у которых есть различные заявки, по датам.
ну и к этим заявкам можно кучу всего привязывать (например, причины вызова).
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33658059
Ющенко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
puhh по поводу dropdownlist - я имела в виду элементы, которые, как и грид, bind-ятся при первой загрузке.

пардон может за глупый вопрос вы условие не забываете в page_load ставить
Код: plaintext
If Me.IsPostBack = False
?


зы при последующих загрузках не нужно сохранять во вьюстейт ничего если стоит условие If Me.IsPostBack = False!

ззы тк при отправке клиентского запроса на сервер всегда вначале выполняется событие page_load а потом все остальное!

А сами dropdownlist они на форме лежат или встроены в датагрид у вас при режиме редактирования датагрида?
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33658131
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не редактируйте в гриде - и проблем не будет
Используйте отдельную форму для редактирования.

-- Tygra's --
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33658248
Ющенко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygraНе редактируйте в гриде - и проблем не будет
Используйте отдельную форму для редактирования.

-- Tygra's --

нет если нужно то можно dropdownlist и в датагрид его зашить и потом работать с методом
Код: plaintext
Private Sub MyGrid_ItemDataBound 
, чтобы он корректно работал

вообще тут зависит от требований на форме это проще всего сделать! А в случае если например проект интернет-магазин и пользователю нужно редактировать свою корзину с товарами
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33658327
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даже если корзину - принцип малость другой. Не нужен там весь viewstate.
Да и datagrid в автоматическом режиме лучше вообще не использовать. Или ни в каком - через datareader лучше, чтобы все своими руками контролировать. Пока что полностью надеяться на контролы нельзя.

-- Tygra's --
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33658357
Ющенко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygraДаже если корзину - принцип малость другой. Не нужен там весь viewstate.
Да и datagrid в автоматическом режиме лучше вообще не использовать. Или ни в каком - через datareader лучше, чтобы все своими руками контролировать. Пока что полностью надеяться на контролы нельзя.

-- Tygra's --

я не про viewstate я про редактирование внутри таблицы по типу

Код: plaintext
1.
2.
<ItemTemplate>
										<asp:TextBox Text='<%#Container.DataItem("kolvo_b") %>' ID="txtkolvo_b" Runat =server />
									</ItemTemplate>

viewstate нужно использовать когда действительно нужно
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33663683
puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ющенко puhh по поводу dropdownlist - я имела в виду элементы, которые, как и грид, bind-ятся при первой загрузке.

..skip..

А сами dropdownlist они на форме лежат или встроены в датагрид у вас при режиме редактирования датагрида?


Я действительно с dropdownlist всех запутала, сорри.:)
Я просто читаю параллельно кучу всякой инфы, и часто сталкиваюсь с идеей, что EnabledViewstate нужно делать false, т.к. даже если мы во Viewstate сами специально ничего не запихиваем, то форма все равно сохраняет состояние.

Так что спрашивая про dropdownlist я имела в виду именно это...

Ющенко
пардон может за глупый вопрос вы условие не забываете в page_load ставить
Код: plaintext
If Me.IsPostBack = False
?


зы при последующих загрузках не нужно сохранять во вьюстейт ничего если стоит условие If Me.IsPostBack = False!

ззы тк при отправке клиентского запроса на сервер всегда вначале выполняется событие page_load а потом все остальное!



Сейчас во ViewState я храню DataTable для datagrid и DataTable для dropdownlist в datagrid.
Dropdownlist на форме только Bind-ю при первой загрузке.

Кстати, во viewstate я сохраняю в PreRender
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33663714
puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygraНе редактируйте в гриде - и проблем не будет
Используйте отдельную форму для редактирования.

-- Tygra's --


Ну, наверно в другой раз так и поступлю.

Кстати, а можно ли вернуть измененное состояние заявки в главную форму из формы для редактирования без того, чтобы пользователю приходилось нажимать на кнопку "обновить"?
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33663729
puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, буду делать свой paging.

А на свой вопрос - как реализовывать вручную редактирование, сохранение и удаление в гриде, если не хранить DataTable во ViewState - я так и не нашла ответа :(
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33665686
Ющенко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
puhh Ющенко puhh по поводу dropdownlist - я имела в виду элементы, которые, как и грид, bind-ятся при первой загрузке.

..skip..

А сами dropdownlist они на форме лежат или встроены в датагрид у вас при режиме редактирования датагрида?


Я действительно с dropdownlist всех запутала, сорри.:)
Я просто читаю параллельно кучу всякой инфы, и часто сталкиваюсь с идеей, что EnabledViewstate нужно делать false, т.к. даже если мы во Viewstate сами специально ничего не запихиваем, то форма все равно сохраняет состояние.

Так что спрашивая про dropdownlist я имела в виду именно это...

Ющенко
пардон может за глупый вопрос вы условие не забываете в page_load ставить
Код: plaintext
If Me.IsPostBack = False
?


зы при последующих загрузках не нужно сохранять во вьюстейт ничего если стоит условие If Me.IsPostBack = False!

ззы тк при отправке клиентского запроса на сервер всегда вначале выполняется событие page_load а потом все остальное!



Сейчас во ViewState я храню DataTable для datagrid и DataTable для dropdownlist в datagrid.
Dropdownlist на форме только Bind-ю при первой загрузке.



делается просто: читаете DataReader - м в свой dropdownlist из бд ( все это делаете это в page_load в If Me.IsPostBack = False) и никаких вьюстейтов не нужно!!!!!
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33665707
Ющенко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
puhhА на свой вопрос - как реализовывать вручную редактирование, сохранение и удаление в гриде, если не хранить DataTable во ViewState - я так и не нашла ответа :(

элементарно! написать функцию, которая будет заполнять датасорс вашего грида данными из БД и реализовать стандартные методы датагрида (edit,cancel,update,delete) и внутри этих методов вызывать эту функцию!

читали http://aspnetmania.com/Articles/Category/2.html

puhhВ общем, буду делать свой paging.


пейджинг тоже сейчас пишу :)

зы А чем вам стандартный не нравится? хотите расширить функциональность или опять вьюстейт?
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33666230
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ющенко
зы А чем вам стандартный не нравится? хотите расширить функциональность или опять вьюстейт?
стандартный пейджер при запросе тащит с сервера весь набор данных, а на клиенте его расфасовывает по страницам. На небольших наборах это не очень заметно,а вот если в наборе , например, несколько тысяч строк, то производительность существенно падает. На своем проекте после перехода на свой пейджинг я получил -80% по времени формирования страницы на 3000 строк.
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33672865
puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ющенко puhhА на свой вопрос - как реализовывать вручную редактирование, сохранение и удаление в гриде, если не хранить DataTable во ViewState - я так и не нашла ответа :(

элементарно! написать функцию, которая будет заполнять датасорс вашего грида данными из БД и реализовать стандартные методы датагрида (edit,cancel,update,delete) и внутри этих методов вызывать эту функцию!



Логично :) Спасибо.

Вот только опять же, на эту тему - пусть даже мы _специально_ сами ничего во ViewState не записываем, что-нибудь нужно делать со св-вом грида и других элементов "EnableViewState"?


Ющенко
puhhВ общем, буду делать свой paging.


пейджинг тоже сейчас пишу :)

зы А чем вам стандартный не нравится? хотите расширить функциональность или опять вьюстейт?


а, все тоже самое, поменьше вьюстейт первым шагом, а там - посмотрим
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33673398
Ющенко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
puhh Ющенко puhhА на свой вопрос - как реализовывать вручную редактирование, сохранение и удаление в гриде, если не хранить DataTable во ViewState - я так и не нашла ответа :(

элементарно! написать функцию, которая будет заполнять датасорс вашего грида данными из БД и реализовать стандартные методы датагрида (edit,cancel,update,delete) и внутри этих методов вызывать эту функцию!



Логично :) Спасибо.

Вот только опять же, на эту тему - пусть даже мы _специально_ сами ничего во ViewState не записываем, что-нибудь нужно делать со св-вом грида и других элементов "EnableViewState"?


Ющенко
puhhВ общем, буду делать свой paging.


пейджинг тоже сейчас пишу :)

зы А чем вам стандартный не нравится? хотите расширить функциональность или опять вьюстейт?


а, все тоже самое, поменьше вьюстейт первым шагом, а там - посмотрим

короче забудьте про вьюстейт =))))
никаких EnableViewState для элементов!!!!!(вам разрешено использовать только ViewState для класса Page ), у каждого элемента есть поле ViewState
но оно используется для функции function __doPostBack для передачи на сервер имени элемента и события и пр.

по пейджингу см. топик пейджинг :)
...
Рейтинг: 0 / 0
размер viewstate и datagrid
    #33673449
Ющенко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот пример заливки данных в грид из БД через ХП без вьюстейтов и опции по ее сортировке работа со стандартным пейджингом выделение итд (и без вьюстейтов!!!):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Me.IsPostBack = False Then
            Dim dsObj As DataSet = GetInitDataSet()
            BindGrid(dsObj)
 End If
End Sub

 Public Function GetInitDataSet() As DataSet
        Dim connObj As New SqlConnection
        Dim sqlconn As String
        Dim SimpComp As New SQLCon.SQLConnect
        Dim cmdObj As New SqlCommand
         Dim daRes As New SqlDataAdapter
        Dim dsRes As New DataSet

        sqlconn = SimpComp.GetConn
        Try
            connObj.ConnectionString = sqlconn
            cmdObj.Connection = connObj
            cmdObj.CommandText = "SelectUch"
            cmdObj.CommandType = CommandType.StoredProcedure

            daRes.SelectCommand = cmdObj
            daRes.Fill(dsRes, "Klasif_OPF")
            connObj.Close()
          
        Catch err As Exception
        Finally
            If Not connObj Is Nothing Then
                connObj.Close()
            End If
  End Try
        Return dsRes
    End Function

Public Sub BindGrid(ByVal ds As DataSet)
        MyGrid.DataSource = ds.Tables("Klasif_OPF")
        MyGrid.DataBind()
End Sub

Private Sub MyGrid_CancelCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles MyGrid.CancelCommand
        MyGrid.EditItemIndex = - 1 
        Dim dsRes As DataSet = FDataSet()
        BindGrid(dsRes)
    End Sub

    Private Sub MyGrid_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles MyGrid.EditCommand
        MyGrid.EditItemIndex = e.Item.ItemIndex
        Dim dsobj As DataSet = FDataSet()

        ' Dim dsRes As DataSet = GetInitDataSet()
        BindGrid(dsobj)
    End Sub

    Private Sub MyGrid_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles MyGrid.PageIndexChanged
        MyGrid.CurrentPageIndex = e.NewPageIndex
        Dim dsRes As DataSet = GetInitDataSet()
        BindGrid(dsRes)
    End Sub

    Private Sub MyGrid_SortCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEventArgs) Handles MyGrid.SortCommand
        Dim dsRes As DataSet = FDataSet()
        dsRes.Tables("Klasif_OPF").DefaultView.Sort = e.SortExpression
        BindGrid(dsRes)
    End Sub

зы пейджинг нужно менять но не для сжатия вьюстейта, как вы пишите, а для уменьшения количества выборки данных из БД ( для использования кластерного индекса).
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / размер viewstate и datagrid
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]