powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Pagination: Как MS себе ее представляет
21 сообщений из 21, страница 1 из 1
Pagination: Как MS себе ее представляет
    #34172585
Аноним
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все что мне нужно — постранично отображать данные 1 таблицы в GridView.
Казалось бы что еще проще? Выбрали 100 записей, показали, перешли по ссылке "2", выбрали следующие 100 и т д. Но ведь ничего подобного! GridView с его "встроенной поддержкой постраничного отображения данных" решил все за меня — сначала я должен выбрать миллион записей, показать из них первые 100, потом выбрать еще миллион, показать следующие 100.
Но ведь вроде делают люди приложения?! Неужели все руками? Ну зачем же тогда было городить сотню контролов которые все равно никто не использует не иначе как для хомяков? Почему нельзя было просто дать НОРМАЛЬНЫЙ ШАБЛОНИЗАТОР, такой как в Ruby On Rails в конце концов.
...
Рейтинг: 0 / 0
Pagination: Как MS себе ее представляет
    #34172634
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
незнаю конкретно чем ты недоволен... ;)
вероятно тем пейджингом, который существует в DG (DW)...
так вот:
лично я тут тоже участвовал в пару темах по этому вопросу - собственный пейджинг and etc.
попробовал запустить на локале - встроенный пейджинг работал на 1000000 записей с выборкой в 50 строк на страницу - одна секунда +- доли...
подумалось - а так ли это важно для нет - когда ответа сервера на любую др. страницу можно ждать по 5-7 сек.
сделал вывод - можно пользоваться встроенным пейджингом и не стрессовать ;)
P.S. наверное я хомяк
...
Рейтинг: 0 / 0
Pagination: Как MS себе ее представляет
    #34172706
rameel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, <Аноним>, Вы писали:

А>Все что мне нужно — постранично отображать данные 1 таблицы в GridView.
А>Казалось бы что еще проще? Выбрали 100 записей, показали, перешли по ссылке "2", выбрали следующие 100 и т д. Но ведь ничего подобного!

Можно пояснить для тех, кто в танке

А> GridView с его "встроенной поддержкой постраничного отображения данных" решил все за меня — сначала я должен выбрать миллион записей, показать из них первые 100, потом выбрать еще миллион, показать следующие 100.

Не подскажешь, где такую траву берешь :)))

А>Ну зачем же тогда было городить сотню контролов которые все равно никто не использует не иначе как для хомяков? Почему нельзя было просто дать НОРМАЛЬНЫЙ ШАБЛОНИЗАТОР, такой как в Ruby On Rails в конце концов.... << RSDN@Home 1.2.0 alpha rev. 668>>
...
Рейтинг: 0 / 0
Pagination: Как MS себе ее представляет
    #34172717
calbears
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rameel
Аноним
А> GridView с его "встроенной поддержкой постраничного отображения данных" решил все за меня — сначала я должен выбрать миллион записей, показать из них первые 100, потом выбрать еще миллион, показать следующие 100.

Не подскажешь, где такую траву берешь

А вы считаете, что это как то по другому работает? Может объясните тогда как? А то все про траву, да про траву. Давайте уж и по ASP.NET немного поговорим, по делу так сказать :-).
...
Рейтинг: 0 / 0
Pagination: Как MS себе ее представляет
    #34172722
Аноним
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, calbears, Вы писали:

C>Не подскажешь, где такую траву берешь

C>А вы считаете, что это как то по другому работает? Может объясните тогда как? А то все про траву, да про траву. Давайте уж и по ASP.NET немного поговорим, по делу так сказать :-).

Вот вот. Курил курил маны по этому делу, вычитал, что можно создать ObjectDataSource и там указать метод который возвращает кол-во записей в таблице (если правильно понял, так как не проверял еще). Однако нет же счастия — там тоже за меня определено: "у класса который дергает базу должен быть конструктор без параметров". А если у меня весь слой доступа к данным не подразумевает подобного? У меня строка соединения к примеру передается как 1 из параметров конструктора. Ну да фиг с ним с конструктором я согласен сделать свойство которое устанавливает connectionString. В "декларативном подходе ASP.NET увы не предусмотрели возможность установки параметра для своего класса"

ЗЫ: Если бы Ruby On Rails предусмотрели работу с хранимыми процедурами, да еще и с такими, которые возвращают 2 result set'a цены бы не было честное слово. Just For Fun'ы даже работу с AJAX сделали прозрачнее, легче, красивее в конце концов чем миллиардная контора.
...
Рейтинг: 0 / 0
Pagination: Как MS себе ее представляет
    #34172798
botpride
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как минимум, несколько соображений:

- при попытках подключиться через левые дрова/к левым базам упомянутый грид может выдать что-то вроде Data source doesn't support paging (дословно не помню, но что-то близкое). Значит, все-таки используется нечто на уровне БД, а не на уровне прослойки .NET.

- стандартный дизайн-паттерн для пейджинга выглядит так: получаем ПОЛНЫЙ список первичных ключей (миллион записей - значит миллион, и т.д.), либо, как минимум, TOP {N} (в синтаксисе MSSQL), после чего шлем второй запрос, уже с полным списком полей и условием WHERE ID IN (фрагмент, выкушенный из первого запроса). Я не думаю, что MS изобретала велосипед

- в ORACLE, действительно, можно исхитриться через использование ROWNUM (WHERE ROWNUM>[начало страницы] AND ROWNUM<[конец страницы]), но в MSSQL, насколько мне помнится, аналогов нет - разве только организовывать хранимые процедуры с глупыми счетчиками. Вы уверены, что это будет быстрее?

- данные из запроса по-умолчанию кэшируются, причем никто точно не знает, на уровне конкретной сессии или на уровне всего Application (или это где-то написано?)
А значит, еще не факт, что для большого сервера, к которому одновременно обращается, скажем, 1000 пользователей, пытающихся получить разные страницы одного и того же запроса, вариант, когда данные всеми отбираются из единожды полученного и кэшированного датасета, так уж плох.
...
Рейтинг: 0 / 0
Pagination: Как MS себе ее представляет
    #34172875
A_HREF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, Аноним, Вы писали:

А>Все что мне нужно — постранично отображать данные 1 таблицы в GridView.
А>Казалось бы что еще проще? Выбрали 100 записей, показали, перешли по ссылке "2", выбрали следующие 100 и т д. Но ведь ничего подобного! GridView с его "встроенной поддержкой постраничного отображения данных" решил все за меня — сначала я должен выбрать миллион записей, показать из них первые 100, потом выбрать еще миллион, показать следующие 100.
А>Но ведь вроде делают люди приложения?! Неужели все руками? Ну зачем же тогда было городить сотню контролов которые все равно никто не использует не иначе как для хомяков? Почему нельзя было просто дать НОРМАЛЬНЫЙ ШАБЛОНИЗАТОР, такой как в Ruby On Rails в конце концов.

Вам надо просто прочитать серию статей на www.asp.net:
1. Как тупо сделать пейджинг: http://www.asp.net/learn/dataaccess/tutorial24cs.aspx?tabid=63
2. Как правильно сделать его: http://www.asp.net/learn/dataaccess/tutorial25cs.aspx?tabid=63
...
Рейтинг: 0 / 0
Pagination: Как MS себе ее представляет
    #34172899
botpride
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То, что описано в п.2 - фактически аналог того, что я написал про Oracle (Microsoft опять, кхммм... позаимствовала чужое удачное решение - оракла, я имею в виду:) ). Проблема в том, что это не отработает ни на MSSQL2000 (не говоря про Access), ни на куче других баз типа MySQL/firebird, буде таковые придет в голову использовать.
Соответственно, было бы категорически неправильно требовать от СТАНДАРТНОГО УНИВЕРСАЛЬНОГО компонента использовать подход, работающий аж с двумя типами БД - Oracle/MSSQL2005.
Кроме того, приведенное "правильное" решение будет работать еще и ровно с одной сортировкой, что и вовсе глупость. А "еще более правильное" решение - подразумевает не хранимую процедуру, а динамическую компоновку запроса с приписыванием условия отбора по ROW_NUMBER.

В общем, GridView - вполне удовлетворительная реализация для 99% не слишком серьезных проектов, на которые дотнет и нацелен (посмотрите любой торговый сайт - где там миллион позиций?:) )
...
Рейтинг: 0 / 0
Pagination: Как MS себе ее представляет
    #34172925
Dimon aka Manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мелкомягкие предоставляют средства для решения типовых задач, но никак не ограничивают кого бы то ни было в реализации любых других алгоритмов. Если хочется быстрый (и правильный) пейджинг - курим ObjectDataSource и все дела.
Новое в ASP.NET 2. Контролы DataSource. Часть 2 - ObjectDataSource

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
Pagination: Как MS себе ее представляет
    #34173016
rameel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, calbears, Вы писали:

C>А вы считаете, что это как то по другому работает? Может объясните тогда как?

Ну во-первых, GridView — это всего лишь презентационный слой, отображающий переданные ему данные. За выборку, извлечение и фильтрацию данных из базы (будь то субд, dataset или что-то другое) это вообще-то не в его компетенции. Если ты не удосуживаешься ограничить выборку из базы и передаешь ему каждый раз все свои 1000000 записей, то кого в этом винить как не самого себя :xz: Ну а то, что в наличии, точнее сказать, в реализации GridView стало возможным из переданных ему данных делать еще и разбивку по страницам — так это, ИМХО, бонус.

А>GridView с его "встроенной поддержкой постраничного отображения данных" решил все за меня — сначала я должен выбрать миллион записей , показать из них первые 100, потом выбрать еще миллион, показать следующие 100.

Я вот не понимаю, зачем извлекать все записи :???: Воспользуйся одним из стандартных средств (SqlDataSource или ObjectDataSource), и все необходимые параметры от сортировки до на начала и количества затребованных данных тебе будет доступно. Вот и пользуйся ими.

Прошу меня извинить, если обидел :)... << RSDN@Home 1.2.0 alpha rev. 668>>
...
Рейтинг: 0 / 0
Pagination: Как MS себе ее представляет
    #34173436
Фотография vbnet2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо б было, конечно, MS сделать нормальный пейджер, который бы нормально лепился к DataList и GridView. А то какой контрол не тронь - получается только для хомяков...
А делать SqlDataSource с СОБСТВЕННЫМИ параметрыми это и называется - весь пейджинг делать руками.

Я присоединяюсь к vladgrig в том плане, пока из данных идет текст - вообще не стоит думать об этом - расходы на передачу данных с SQL просто ничтожные. Тысячные и сотые доли секунды даже на десятках тысячах записей. Другое дело - когда из базы поднимаются рисунки. Тогда все это действительно весьма накладно и без собственного пейджинга не обойтись.

И ведь проблемы ASP2 - они вообще-то не в этих тысячных долях секунды на сервере, а в непомерной тяжести страничек (по крайней мере на стандартных контролах) при перегрузке их на клиента. А здесь пейджинг хоть как делай, он это время не сократит. Но для КАЧЕСТВЕННЫХ сайтов, быстрых и с огромным обьемом данных, конечно встроенный пейджинг, даже без рисунков - это сплошные тормоза на сервере. Кстати существенно их уменьшить можно переведя базу в режим "только чтение". Это невелирует идиотский микрософтовский пейджинг.

А оценить обьем данных, передаваемых процедурой, можно нажав кнопку ClientStatistic. Без рисунков он большим не будет никак. Я вот, например, сейчас избежал ковыряния в собственном пейджере, просто отказавшись от Джоина рисунков прямо на SQL.
...
Рейтинг: 0 / 0
Pagination: Как MS себе ее представляет
    #34173696
cadet354
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, vbnet2000, Вы писали:


V>Я присоединяюсь к vladgrig в том плане, пока из данных идет текст — вообще не стоит думать об этом — расходы на передачу данных с SQL просто ничтожные. Тысячные и сотые доли секунды даже на десятках тысячах записей. Другое дело — когда из базы поднимаются рисунки. Тогда все это действительно весьма накладно и без собственного пейджинга не обойтись.
не могли бы вы поделится куском кода в котором вы извлекаете рисунки и отображаете в гриде?... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
Pagination: Как MS себе ее представляет
    #34174509
Фотография vbnet2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
не могли бы вы поделится куском кода 
Эти куски кода я вешаю на RowDataBound в DataList, а пейждинг фактически делаю только по маленьким кусочкам - ну там идентификатор и наименование от силы.
Если из SQL на Web-сервер поднимается скажем килобайт 100, даже до полмегабайта - вообще нет смысла заморачиваться на собственном пейджинге, ведь тормоза ASP2
происходят на этапе когда вот такая мурня
ASP2<td><a href="#ctl00_P1_FN1_M1_SkipLink"><img alt="Skip Navigation Links" src="/SH/WebResource.axd?d=iLMMPkjLP0w3d9N04hK9Gw2&t=632988584718281250" width="0" height="0" style="border-width:0px;" /></a><table id="ctl00_P1_FN1_M1" title="Выберите раздел форума" class="ctl00_P1_FN1_M1_2" cellpadding="0" cellspacing="0" border="0">
<tr onmouseover="Menu_HoverRoot(this)" onmouseout="Menu_Unhover(this)" onkeyup="Menu_Key(this)" id="ctl00_P1_FN1_M1n0">идет на клиента, вместо скажем нормального html-кода
PHP<td><a href="1.htm"><img src="1.gif"" /></a><table title="Выберите раздел форума" cellpadding="0" cellspacing="0" border="0">
Кроме того, все чем, занимаются PHP, Perl и прочие программисты - они выковыривают из HTML пробелы, табуляции, переводы строки, с
окщают идентификаторы и прочее. А здесь вместо <IMG SRC="1.GIF"> по <img src="/SH/WebResource.axd?d=iLMMPkjLP0w3d9N04hK9Gw2&t=632988584718281250>
вытаскивается скрипт такой охренительной длины , что браузер на клиенте выпадает в полный аут на несколько секунд
(или даже минут, если например вас угораздило применить TreeView, XmlDataSource или прочие чудо-контролы из ASP2).
И это даже при отключонном ViewState! Поэтому они и не стали тут делать нормального пейджинга, ибо не в нем проблемы.
Если конечно с SQL на Web-сервер передается мегабайт 50 - тогда конечно, он нужен, а на копейках до одного мегабайта -
тормоза ASP2 совсем на другом этапе - линия передачи и захлебывающийся на клиенте браузер...

Поэтому лично я поднимаю из SQL только идентификаторы... Для подъема же собственно рисунков из SQL (который цепляется в RowDataBound)
я использую вот такой свой контрол -
Код: 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.
65.
66.
67.
68.
69.
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Image.aspx.vb" Inherits="Control_Image" %>

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="SQLImage.aspx.vb" Inherits="SQLImage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        эта страничка - просто способ записать в поток браузера данные в формате IMAGE/BMP</div>
    </form>
</body>
</html>

Imports System.Data.SqlClient
Partial Class SQLImage
    Inherits System.Web.UI.Page
    Dim CN As SqlConnection, CMD As SqlCommand, DR As SqlDataReader
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Request.QueryString("ConnectionStringsName") = Nothing Or Request.QueryString("SelectStatement") = Nothing Then Exit Sub
        Try
            CN = New SqlConnection(ConfigurationManager.ConnectionStrings(Request.QueryString("ConnectionStringsName")).ConnectionString)
            CN.Open()
            CMD = New SqlCommand(Request.QueryString("SelectStatement"), CN)
            DR = CMD.ExecuteReader
            If DR.Read Then
                If IsDBNull(DR( 0 )) Then
                    ''в SQL-поле NULL
                    Dim X As New Drawing.Bitmap( 1 ,  1 , System.Drawing.Imaging.PixelFormat.Format24bppRgb)
                    Dim G As Drawing.Graphics = Drawing.Graphics.FromImage(X)
                    G.Clear(Drawing.Color.White)
                    Response.ContentType = "image/bmp"
                    X.Save(Response.OutputStream, Drawing.Imaging.ImageFormat.Gif)
                    ''так пустой рисунок почему-то не выводится
                    ''&H47494638396101000100800000FFFFFF00000021F90401000000002C00000000010001000002024401003B00
                    ''Dim OnePixel As Byte() = {&H47, &H49, &H46, &H38, &H39, &H61, &H1, &H0, &H1, &H0, &H80, &H0, &H0, &HFF, &HFF, &HFF, &H0, &H0, &H0, &H21, &HF9, &H4, &H1, &H0, &H0, &H0, &H0, &H2C, &H0, &H0, &H0, &H0, &H1, &H0, &H1, &H0, &H0, &H2, &H2, &H44, &H1, &H0, &H3B, &H0}
                    ''Response.BinaryWrite(OnePixel)
                Else
                    ''здесь все типы файлов - и возникнет исключение на неграфическом файле
                    ''Response.ContentType = "image/bmp"
                    ''Response.BinaryWrite(CType(DR(0), Byte()))
                    Dim S As New System.IO.MemoryStream(CType(DR( 0 ), Byte()))
                    Dim I As Drawing.Image = Drawing.Image.FromStream(S)
                    ''тут главное - при выводе сохранить первоначальный формат рисунка
                    Select Case I.RawFormat.Guid
                        Case Drawing.Imaging.ImageFormat.Jpeg.Guid : I.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
                        Case Drawing.Imaging.ImageFormat.Gif.Guid : I.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif)
                        Case Drawing.Imaging.ImageFormat.Png.Guid : I.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Png)
                        Case Else : I.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif)
                    End Select
                End If
            Else
                Throw New Exception
            End If
            DR.Close()
            CN.Close()
        Catch ex As Exception
            Response.ContentType = "image/bmp"
            Dim X As New Drawing.Bitmap( 50 ,  10 , System.Drawing.Imaging.PixelFormat.Format24bppRgb)
            Dim G As Drawing.Graphics = Drawing.Graphics.FromImage(X)
            G.Clear(Drawing.Color.White)
            G.DrawString("Error", New Drawing.Font("",  10 , Drawing.FontStyle.Regular, Drawing.GraphicsUnit.Pixel), Drawing.Brushes.Red,  0 , - 2 )
            X.Save(Response.OutputStream, Drawing.Imaging.ImageFormat.Gif)
        End Try
    End Sub
End Class

Что касается привязки этого к DataGrid или DataList - тут можно по разному, Там есть DataKey - в котором есть ключ, по которому можно вытащить рисунок.

Второй способ, который я применяю - это хранение в кеше DataSeta (ну если Web-сервер достаточно памяти имеет) - в этом случае я применяю контрол ImageFromDS

Код: 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.
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="ImageFromDS.aspx.vb" Inherits="ImageFromDS" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        эта страничка - просто способ записать в поток браузера в формате IMAGE/BMP<br />
        на URL этой странички можно сосластся при необходимости добавления рисунка из ДатаСета</div>
    </form>
</body>
</html>
Partial Class ImageFromDS
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim WorkNodes As New Global.SH.WorkingTovarList  
        If Not (Session("WorkNodes") Is Nothing) Then WorkNodes = Session("WorkNodes")
        Dim i As String = Request.QueryString("i")     ''какой рисунок из сессионного отбора надо отрисовать
        Dim OneTovarPos As SH.WorkingTovar
        For Each OneTovarPos In WorkNodes
            If OneTovarPos.TovarValue = i Then
                Response.ContentType = "image/bmp"
                'Response.BinaryWrite(CType(OneTovarPos.PriceDS._MyPrice(0).MyImage(), Byte()))
                Try
                    Response.BinaryWrite(SH.Common.AddRightToImage(OneTovarPos.PriceDS._MyPrice( 0 ).MyImage()))
                Catch ex As Exception
                    Response.BinaryWrite(SH.Common.AddRightToImage(Nothing))
                End Try
            End If
        Next
    End Sub
End Class
Тут тот же принцип - пейджить только идентификаторы (ну и наименование), а за рисунками ходить уже не в базу, а просто в КЭШ.

Ну и третий способ - я вообще-то делаю все время бизнес-объекты - как WorkNodes здесь . Ну а рисунки - динамически догружаются в них по требованию
(ну это тот же КЭШ по идее, только с собственно политикой кеширования). Но в таблы, DataList и пр. -
опять же выводить по минимуму - идентификаторы и названия - так очень трудно набрать даже мегабайт данных от SQL к Web-серверу,
а тогда глюки микрософтовского пейджинга уходят совсем на второй план относительно глюков неоптимально создаваемого HTML-кода
и торможения кода в браузере, а не на Web-сервере.
...
Рейтинг: 0 / 0
Pagination: Как MS себе ее представляет
    #34174703
cadet354
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, vbnet2000, Вы писали:

V> PHP<td><a href="1.htm"><img src="1.gif"" /></a><table title="Выберите раздел форума" cellpadding="0" cellspacing="0" border="0">
V>Кроме того, все чем, занимаются PHP, Perl и прочие программисты — они выковыривают из HTML пробелы, табуляции, переводы строки, с
V>окщают идентификаторы и прочее. А здесь вместо <IMG SRC="1.GIF"> по <img src="/SH/WebResource.axd?d=iLMMPkjLP0w3d9N04hK9Gw2&t=632988584718281250&gt;
V>вытаскивается скрипт такой охренительной длины, что браузер на клиенте выпадает в полный аут на несколько секунд
V>(или даже минут, если например вас угораздило применить TreeView, XmlDataSource или прочие чудо-контролы из ASP2).
V>И это даже при отключонном ViewState! Поэтому они и не стали тут делать нормального пейджинга, ибо не в нем проблемы.
ИМНО, ты путаешь теплое и мягкое, какое отношение /SH/WebResource.axd имеет к paging? :???:
V>Если конечно с SQL на Web-сервер передается мегабайт 50 — тогда конечно, он нужен, а на копейках до одного мегабайта —
V>тормоза ASP2 совсем на другом этапе — линия передачи и захлебывающийся на клиенте браузер...

V>Поэтому лично я поднимаю из SQL только идентификаторы... Для подъема же собственно рисунков из SQL (который цепляется в RowDataBound)
V>я использую вот такой свой контрол —
я делаю подобным способом, думал может что изобрели нового :)... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
Pagination: Как MS себе ее представляет
    #34174801
Фотография vbnet2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а... ну пардон, я ж не знал...
ну может кому полезно будет
...
Рейтинг: 0 / 0
Pagination: Как MS себе ее представляет
    #34174881
Аноним
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, vbnet2000, Вы писали:

V>Я присоединяюсь к vladgrig в том плане, пока из данных идет текст — вообще не стоит думать об этом — расходы на передачу данных с SQL просто ничтожные. Тысячные и сотые доли секунды даже на десятках тысячах записей. Другое дело — когда из базы поднимаются рисунки. Тогда все это действительно весьма накладно и без собственного пейджинга не обойтись.

А если данные передаются по сети?
...
Рейтинг: 0 / 0
Pagination: Как MS себе ее представляет
    #34174936
rameel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, vbnet2000, Вы писали:

V>Поэтому лично я поднимаю из SQL только идентификаторы... Для подъема же собственно рисунков из SQL (который цепляется в RowDataBound)
V>я использую вот такой свой контрол — <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Image.aspx.vb" Inherits="Control_Image" %>

Я бы не советовал использовать в данном случае использовать обычную страницу, для этого у него несколько длинный цикл обработки. Легковесней здесь использовать .ashx... << RSDN@Home 1.2.0 alpha rev. 668>>
...
Рейтинг: 0 / 0
Pagination: Как MS себе ее представляет
    #34175019
Фотография vbnet2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА если данные передаются по сети?Ну я в принципе пробовал - для себя сделал вывод - если из SQL поднимается до мегабайта - то этим торможением можно просто пренебречь относительно торможения в браузере (особенно если там скрипты еще более тормозные, чем просто от ASP2 - например от Атласа).

Что касается ASHX - да это более эффективно, но и более гиморойно. И опять же - я вот не вижу проблем избыточной загрузки сервера (ну может сервер у меня мощный - 8ГБ памяти и загрузка небольшая) - в моих условиях это не тот момент, где стоит заморачиваться - все проблемы что я наблюдаю - это тяжеловесность страничек ASP2, коллосальное время, необходимое на их пережевывание браузером... Хотя в целом, для супер нагруженных сайтов и относительно слабых серверов, наверное стоит этим заморачиваться....
...
Рейтинг: 0 / 0
Pagination: Как MS себе ее представляет
    #34175084
Аноним
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, rameel, Вы писали:

R>Я бы не советовал использовать в данном случае использовать обычную страницу, для этого у него несколько длинный цикл обработки. Легковесней здесь использовать .ashx

А что используем в качестве шаблонизатора? Я тоже решил давно отказаться от серверных форм ASPX. Но что юзать как Template Engine? Писать свой? Пишу вот юзаю IronPython но вот что-то у меня опыта маловато в этом деле получается не красиво.
...
Рейтинг: 0 / 0
Pagination: Как MS себе ее представляет
    #34176124
botpride
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АнонимЗдравствуйте, vbnet2000, Вы писали:

V>Я присоединяюсь к vladgrig в том плане, пока из данных идет текст — вообще не стоит думать об этом — расходы на передачу данных с SQL просто ничтожные. Тысячные и сотые доли секунды даже на десятках тысячах записей. Другое дело — когда из базы поднимаются рисунки. Тогда все это действительно весьма накладно и без собственного пейджинга не обойтись.

А если данные передаются по сети?

А причем тут рисунки?! Рисунки - это блобы, от которых в датасете передается только 16-байтный (кажется) дескриптор. А сам рисунок тянется сознательно, и только КОГДА НУЖЕН.
Соответственно, все "ненужные" записи пробегаются курсором, и блобы из них не высасываются. Так о чем разговор?
А что касается нагрузки на сервер... Вы не задумывались, что для того, чтобы выбрать 20 записей из СОРТИРОВАННОГО миллиона, сервер сначала должен-таки этот запрос исполнить целиком (т.е. получить миллион записей и отсортировать их), чтобы потом уже отдать наружу небольшой его кусок? Конечно, оптимизаторы творят чудеса, но не в подобных случаях.
...
Рейтинг: 0 / 0
Pagination: Как MS себе ее представляет
    #34176127
botpride
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
зы: под "нагрузкой на сервер", естественно, имелась в виду нагрузка на MSSQL.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Pagination: Как MS себе ее представляет
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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