Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
У меня общий такой вопрос... Какое разумное кол-во строк для datagrid стоит возвращать клиенту? Ну и, собственно, хранить во viewstate? У меня уже на 40 записях (правда, для каждой записи порядка 15 полей dataset) ощущается замедление скорости. ViewState сжимается, но без сжатия он достаточно большой. И на это сжатие - разжатие уходит несколько секунд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 16:45 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
puhhУ меня общий такой вопрос... Какое разумное кол-во строк для datagrid стоит возвращать клиенту? Ну и, собственно, хранить во viewstate? У меня уже на 40 записях (правда, для каждой записи порядка 15 полей dataset) ощущается замедление скорости. ViewState сжимается, но без сжатия он достаточно большой. И на это сжатие - разжатие уходит несколько секунд. а чем вызвана необходимость в ViewState хранить dataset? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 16:54 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
тут дело имхо не в viewstate a в пейджинге. Используете ? Вот здесь я сделал 30 строк, причем последний столбец совместимости расчетный. Выигрыш в скорости получил после отказа от штатного пейджинга. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 16:57 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
Тоже боролся с этой проблемой. Посколько скорость загрузки на плохих каналах очень критична - запретил ViewState вообще. Проще хранить DataTable в сессии. Тогда мы расходуем только память сервера, да и то не более 100 записей, т.к. постраничная выборка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 17:02 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
DatsТоже боролся с этой проблемой. Посколько скорость загрузки на плохих каналах очень критична - запретил ViewState вообще. Проще хранить DataTable в сессии. Тогда мы расходуем только память сервера, да и то не более 100 записей, т.к. постраничная выборка. а не проще сделать кэширование данных? с точки зрения производительности это самый оптимальный вариант ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 17:40 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
Спасибо за внимание. Ситуация такая: 2Dats: ну в общем я тоже храню теперь datatable вместо dataset, и храню на сервере. но не быстро все это получается. 2big-duke: пейджинг - использую, куда ж без него. можете подсказать, или ссылку кинуть на инфу, как обойтись без штатного пейджинга? 2Ющенко: храню viewstate, т.к. в гриде мне нужно, помимо пейджинга, редактировать, сохранять, обновлять, фильтровать... если буду знать, как это сделать без viewstate - с удовольствием сделаю. специфика такая, что у каждого пользователя свои данные. т.е. кэш будет у каждого свой. это нормально? кроме того, помимо грида, есть несколько dropdownlist, которые хранят свое состояние. и я, честно говоря, не понимаю, как хранить это без viewstate - ну, например, если пользователь выбирает фильтры, то они не должны меняться при перезагрузке странички. тоже кэш? буду очень признательно за несколько полезных ссылок - у самой ничего подходящего найти не получилось :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 18:11 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
puhh пейджинг - использую, куда ж без него. Профиллером проверьте сколько времени занимает выборка. Штатный пейджер с сервера забирает весь набор данных. Т.е. если в таблице 1000 строк , а у вас пейджер с шагом в 40 строк, то все равно на сервер пойдет запрос на 1000 строк. Выход - написать свой. Хорошие статьи есть здесь . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 18:25 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
2big-duke: на самом деле, с базой работа быстро происходит. т.е. загрузить 100 строк - это все почти мгновенно. а вот работать с ними потом - уже невозможно :( в смысле, медленно. если сменить фильтр (сотрудник), чтобы загрузить другие данные (где, например, 5 строк) - это тож медленно. ну логично, так как уже ненужная таблица в prerender сначала во viewstate запихивается, а только потом запрос к базе идет. в обратную сторону, к сотруднику с большим кол-вом строк (хотя 100 строк - ну не так уж это и много, вроде?), все происходит гораздо быстрее. опять же, понятно, не нужно большую таблицу во viewstate запихивать. непонятно наверно объясняю :-\ профайлер показывает большую трату времени на compress-decompress, serialize-deserialize. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 18:51 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
А, ну и если цифрами говорить - размер странички, когда я сохраняю viewstate на ней, а не на сервере, да еще и не сжимаю его - 300-400 kb ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 18:55 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
> еще и не сжимаю его - 300-400 kb жесть... а на прямую с сервером, на уровне запросом не пробывали работать? про вью стэйт забудьте, если надо что-либо сохранить в коде страницы - делайте в ручную Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 19:02 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
2Profil: ну когда она обработанная - она ж маленькая :) 1-2 kb но на обработку все это время и тратится :( я не понимаю, что значит - "делать вручную". если у меня есть список сотрудников (допустим, 30 штук), и мне нужно сохранять состояние списка - что мне нужно будет делать, при отключенном viewstate? завести какой-нить label, где хранить selectedindex в этом списке? и как с гридом-то работать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 19:13 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
puhh 2Ющенко: храню viewstate, т.к. в гриде мне нужно, помимо пейджинга, редактировать, сохранять, обновлять, фильтровать... если буду знать, как это сделать без viewstate - с удовольствием сделаю. специфика такая, что у каждого пользователя свои данные. т.е. кэш будет у каждого свой. это нормально? кроме того, помимо грида, есть несколько dropdownlist, которые хранят свое состояние. и я, честно говоря, не понимаю, как хранить это без viewstate - ну, например, если пользователь выбирает фильтры, то они не должны меняться при перезагрузке странички. тоже кэш? буду очень признательно за несколько полезных ссылок - у самой ничего подходящего найти не получилось :( насчет кэша проехали ......( я не понял идею) впринципе big-duke прав нужно самому писать спец. элемент статьи на aspnetmania.com и тут sql.ru Только я не совсем понял зачем хранить dropdownlist, тем более если они не встроены в ваш датагрид? они и так не меняются при перезагрузке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2006, 23:12 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
puhh2Profil: ну когда она обработанная - она ж маленькая :) 1-2 kb но на обработку все это время и тратится :( я не понимаю, что значит - "делать вручную". если у меня есть список сотрудников (допустим, 30 штук), и мне нужно сохранять состояние списка - что мне нужно будет делать, при отключенном viewstate? завести какой-нить label, где хранить selectedindex в этом списке? и как с гридом-то работать? зы вообще для прояснения ситуации нужно чуть более подробное описание исходной задачи (ТЗ)....... а то какое-то гадание на кофейной гуще! насчет запросов Profil в каком-то смысле прав ....... может попробуйте забыть про вью стейты и увеличить частоту запросов к СУБД........ рассмотрите такой вариант...... если хороший сервер, нормальная субд, не кривые запросы и структура БД можно добиться неплохой производительности. зы если честно я изначально занимался администр-нием sql server-a а потом начал заниматься asp.net, потому стараюсь смотреть на проблему с разных сторон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2006, 23:28 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
2Ющенко: похоже, придется работать с запросами к базе - так значительно быстрее, это уже проверено. но я опять же не понимаю, как, например, реализовать редактирование, обновление и удаление без сохранения состояния? достаточно просто идеи. по поводу dropdownlist - я имела в виду элементы, которые, как и грид, bind-ятся при первой загрузке. ------------ про саму задачку, есть список сотрудников, у которых есть различные заявки, по датам. ну и к этим заявкам можно кучу всего привязывать (например, причины вызова). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2006, 13:12 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
puhh по поводу dropdownlist - я имела в виду элементы, которые, как и грид, bind-ятся при первой загрузке. пардон может за глупый вопрос вы условие не забываете в page_load ставить Код: plaintext зы при последующих загрузках не нужно сохранять во вьюстейт ничего если стоит условие If Me.IsPostBack = False! ззы тк при отправке клиентского запроса на сервер всегда вначале выполняется событие page_load а потом все остальное! А сами dropdownlist они на форме лежат или встроены в датагрид у вас при режиме редактирования датагрида? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2006, 12:48 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
Не редактируйте в гриде - и проблем не будет Используйте отдельную форму для редактирования. -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2006, 13:12 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
tygraНе редактируйте в гриде - и проблем не будет Используйте отдельную форму для редактирования. -- Tygra's -- нет если нужно то можно dropdownlist и в датагрид его зашить и потом работать с методом Код: plaintext вообще тут зависит от требований на форме это проще всего сделать! А в случае если например проект интернет-магазин и пользователю нужно редактировать свою корзину с товарами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2006, 13:39 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
Даже если корзину - принцип малость другой. Не нужен там весь viewstate. Да и datagrid в автоматическом режиме лучше вообще не использовать. Или ни в каком - через datareader лучше, чтобы все своими руками контролировать. Пока что полностью надеяться на контролы нельзя. -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2006, 13:55 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
tygraДаже если корзину - принцип малость другой. Не нужен там весь viewstate. Да и datagrid в автоматическом режиме лучше вообще не использовать. Или ни в каком - через datareader лучше, чтобы все своими руками контролировать. Пока что полностью надеяться на контролы нельзя. -- Tygra's -- я не про viewstate я про редактирование внутри таблицы по типу Код: plaintext 1. 2. viewstate нужно использовать когда действительно нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2006, 14:01 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
Ющенко puhh по поводу dropdownlist - я имела в виду элементы, которые, как и грид, bind-ятся при первой загрузке. ..skip.. А сами dropdownlist они на форме лежат или встроены в датагрид у вас при режиме редактирования датагрида? Я действительно с dropdownlist всех запутала, сорри.:) Я просто читаю параллельно кучу всякой инфы, и часто сталкиваюсь с идеей, что EnabledViewstate нужно делать false, т.к. даже если мы во Viewstate сами специально ничего не запихиваем, то форма все равно сохраняет состояние. Так что спрашивая про dropdownlist я имела в виду именно это... Ющенко пардон может за глупый вопрос вы условие не забываете в page_load ставить Код: plaintext зы при последующих загрузках не нужно сохранять во вьюстейт ничего если стоит условие If Me.IsPostBack = False! ззы тк при отправке клиентского запроса на сервер всегда вначале выполняется событие page_load а потом все остальное! Сейчас во ViewState я храню DataTable для datagrid и DataTable для dropdownlist в datagrid. Dropdownlist на форме только Bind-ю при первой загрузке. Кстати, во viewstate я сохраняю в PreRender ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2006, 11:37 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
tygraНе редактируйте в гриде - и проблем не будет Используйте отдельную форму для редактирования. -- Tygra's -- Ну, наверно в другой раз так и поступлю. Кстати, а можно ли вернуть измененное состояние заявки в главную форму из формы для редактирования без того, чтобы пользователю приходилось нажимать на кнопку "обновить"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2006, 11:45 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
В общем, буду делать свой paging. А на свой вопрос - как реализовывать вручную редактирование, сохранение и удаление в гриде, если не хранить DataTable во ViewState - я так и не нашла ответа :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2006, 11:50 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
puhh Ющенко puhh по поводу dropdownlist - я имела в виду элементы, которые, как и грид, bind-ятся при первой загрузке. ..skip.. А сами dropdownlist они на форме лежат или встроены в датагрид у вас при режиме редактирования датагрида? Я действительно с dropdownlist всех запутала, сорри.:) Я просто читаю параллельно кучу всякой инфы, и часто сталкиваюсь с идеей, что EnabledViewstate нужно делать false, т.к. даже если мы во Viewstate сами специально ничего не запихиваем, то форма все равно сохраняет состояние. Так что спрашивая про dropdownlist я имела в виду именно это... Ющенко пардон может за глупый вопрос вы условие не забываете в page_load ставить Код: plaintext зы при последующих загрузках не нужно сохранять во вьюстейт ничего если стоит условие If Me.IsPostBack = False! ззы тк при отправке клиентского запроса на сервер всегда вначале выполняется событие page_load а потом все остальное! Сейчас во ViewState я храню DataTable для datagrid и DataTable для dropdownlist в datagrid. Dropdownlist на форме только Bind-ю при первой загрузке. делается просто: читаете DataReader - м в свой dropdownlist из бд ( все это делаете это в page_load в If Me.IsPostBack = False) и никаких вьюстейтов не нужно!!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2006, 20:36 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
puhhА на свой вопрос - как реализовывать вручную редактирование, сохранение и удаление в гриде, если не хранить DataTable во ViewState - я так и не нашла ответа :( элементарно! написать функцию, которая будет заполнять датасорс вашего грида данными из БД и реализовать стандартные методы датагрида (edit,cancel,update,delete) и внутри этих методов вызывать эту функцию! читали http://aspnetmania.com/Articles/Category/2.html puhhВ общем, буду делать свой paging. пейджинг тоже сейчас пишу :) зы А чем вам стандартный не нравится? хотите расширить функциональность или опять вьюстейт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2006, 20:52 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
Ющенко зы А чем вам стандартный не нравится? хотите расширить функциональность или опять вьюстейт? стандартный пейджер при запросе тащит с сервера весь набор данных, а на клиенте его расфасовывает по страницам. На небольших наборах это не очень заметно,а вот если в наборе , например, несколько тысяч строк, то производительность существенно падает. На своем проекте после перехода на свой пейджинг я получил -80% по времени формирования страницы на 3000 строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 09:39 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
Ющенко puhhА на свой вопрос - как реализовывать вручную редактирование, сохранение и удаление в гриде, если не хранить DataTable во ViewState - я так и не нашла ответа :( элементарно! написать функцию, которая будет заполнять датасорс вашего грида данными из БД и реализовать стандартные методы датагрида (edit,cancel,update,delete) и внутри этих методов вызывать эту функцию! Логично :) Спасибо. Вот только опять же, на эту тему - пусть даже мы _специально_ сами ничего во ViewState не записываем, что-нибудь нужно делать со св-вом грида и других элементов "EnableViewState"? Ющенко puhhВ общем, буду делать свой paging. пейджинг тоже сейчас пишу :) зы А чем вам стандартный не нравится? хотите расширить функциональность или опять вьюстейт? а, все тоже самое, поменьше вьюстейт первым шагом, а там - посмотрим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 11:09 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
puhh Ющенко puhhА на свой вопрос - как реализовывать вручную редактирование, сохранение и удаление в гриде, если не хранить DataTable во ViewState - я так и не нашла ответа :( элементарно! написать функцию, которая будет заполнять датасорс вашего грида данными из БД и реализовать стандартные методы датагрида (edit,cancel,update,delete) и внутри этих методов вызывать эту функцию! Логично :) Спасибо. Вот только опять же, на эту тему - пусть даже мы _специально_ сами ничего во ViewState не записываем, что-нибудь нужно делать со св-вом грида и других элементов "EnableViewState"? Ющенко puhhВ общем, буду делать свой paging. пейджинг тоже сейчас пишу :) зы А чем вам стандартный не нравится? хотите расширить функциональность или опять вьюстейт? а, все тоже самое, поменьше вьюстейт первым шагом, а там - посмотрим короче забудьте про вьюстейт =)))) никаких EnableViewState для элементов!!!!!(вам разрешено использовать только ViewState для класса Page ), у каждого элемента есть поле ViewState но оно используется для функции function __doPostBack для передачи на сервер имени элемента и события и пр. по пейджингу см. топик пейджинг :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 13:11 |
|
||
|
размер viewstate и datagrid
|
|||
|---|---|---|---|
|
#18+
вот пример заливки данных в грид из БД через ХП без вьюстейтов и опции по ее сортировке работа со стандартным пейджингом выделение итд (и без вьюстейтов!!!): Код: 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. зы пейджинг нужно менять но не для сжатия вьюстейта, как вы пишите, а для уменьшения количества выборки данных из БД ( для использования кластерного индекса). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 13:27 |
|
||
|
|

start [/forum/topic.php?all=1&fid=18&tid=1392690]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
36ms |
get topic data: |
9ms |
get forum data: |
4ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 349ms |

| 0 / 0 |
