Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > ASP > Как ускорить вывод на экран большой таблицы?


Автор: Измайлов Ф.В. 29.11.2004, 15:01
Есть таблица (MSSQL), более 5 тыс записей. Для пользователя надо выводить всю таблицу сразу (без постраничного ввода). Пока не сформируется заключительгый тэг </table>, на экране не будет отображена таблица. Есть ли способы ускорить вывод на экран?
В какую сторону смотреть и копать? XML? или еще что-то?
Спасибо.

Автор: ReFleX 29.11.2004, 16:37
Попробуй указывать не все ячейки, а только нужные, если это возможно!

Это может ускорить процесс, но не намного smile

Автор: Измайлов Ф.В. 1.12.2004, 13:16
Как я и предполагал (недаром поставил +???) решение лежит в использовании связки MSSQL+XML+XSL. Вывод 6700 записей на экран занимает не более 2 секунд. НО.. это по внутренней сети. Если кого заинтересует решение, пишите - felix(at)lgn.ru
С уважением,
Измайлов Ф.В.
smile

Автор: Akina 1.12.2004, 14:45
Цитата
Если кого заинтересует решение, пишите

продавать собрался, что ли? а коли нет - запости идею хотя бы, скелет решения, если весь код длинноват...

А в простейшем случае быстрое решение - формировать каждую строку как отдельную таблицу. И прорисовываются оне на экране по мере закачки. Есссно таблицы без разрывов и с фиксированной шириной колонок... сделал, а после ищи изящное решение...

Автор: Измайлов Ф.В. 2.12.2004, 12:23
Не.. продавать конечно не собираюсь. просто не знаком с правилами форума.. новайс smile))
Скелет решения, на словах. MSSQL умеет вываливать SELECT в виде XML документа. Но вид не удобоваримый, не HTML. Что бы преобразовать, применяется шаблон XSL. Тот же CSS, но только для XML-документа. Теперь как это выглядит.
Документ ASP
<%
' Определяем константы ADO.
Const adopenStatic = 3
Const adLockReadOnly = 1
Const adCmdText = 1
Const adPersistXML = 1
Const adExecuteStream = &H400

' создание объектов
Dim cmd,conn
Set cmd = Server.CreateObject("ADODB.Command")
Set conn = Server.CreateObject("ADODB.Connection")

conn.Provider = "sqloledb"
conn.Open "Data Source=localhost;Initial catalog=XXX;", "user", "password"

Set cmd.ActiveConnection = conn
cmd.CommandType = adCmdText
cmd.CommandText = "select * from MarketPlace order by idMesto for xml auto"
cmd.Properties("Output Stream") = Response
cmd.Properties("xml root") = "root"
' полный путь к шаблону
cmd.Properties("XSL") = "C:\Inetpub\wwwroot\first.xsl"
' Если в базе лежат данные с русскими символами
cmd.Properties("Output Encoding")= "Unicode"
cmd.Execute , , adExecuteStream

Set cmd = nothing
Set conn = nothing
%>

А вот текст шаблона
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<table border="1" width="20%">
<!-- Тег вывода всей таблицы -->
<xsl:for-each select="root/MarketPlace">
<tr bgcolor="#F5F5F5">
<!-- Выводим первую колонку -->
<td><xsl:value-of select="@idMesto"/></td>
<!-- Выводим вторую колонку -->
<td>
<!-- Хотим превратить данные в этой колонке в ссылку -->
<a>
<!-- Почему то не понимает русский текст -->
<xsl:attribute name="title">To view some more details about <xsl:value-of select="dogName"/> click to dog name</xsl:attribute>
<!-- Заполняем аттрибуты -->
<xsl:attribute name="href">?Name=<xsl:value-of select="@Name"/>&amp;idMesto=<xsl:value-of select="@idMesto"/></xsl:attribute>
<!-- Вводим само значение -->
<xsl:value-of select="@Name"/>
</a>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>


Автор: Измайлов Ф.В. 2.12.2004, 12:26
Запостил, но с незначительной ошибкой..
<xsl:attribute name="title">To view some more details about <xsl:value-of select="dogName"/> click to dog name</xsl:attribute>
Строка из оригинального примера, всякие DogName - выкидываются... Самое главное, смысл атрибута - это тайтл к ссылке..

Автор: Akina 2.12.2004, 12:40
Ну вот и славненько...

Цитата
не знаком с правилами форума.. новайс

Кто мешает зарегистрироваться? а заодно и правила почитаешь...

Автор: Измайлов Ф.В. 3.12.2004, 10:09
Дополнение к теме.
Практика показала, что XSL-файл, то бишь шаблон, это почти HTML. У нас почти все теги принял, не получилось только <br>
Русские буквы начинает понимать после появления строки
<?xml version="1.0" encoding="WINDOWS-1251"?>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)