| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > ASP > Как ускорить вывод на экран большой таблицы? |
| Автор: Измайлов Ф.В. 29.11.2004, 15:01 |
| Есть таблица (MSSQL), более 5 тыс записей. Для пользователя надо выводить всю таблицу сразу (без постраничного ввода). Пока не сформируется заключительгый тэг </table>, на экране не будет отображена таблица. Есть ли способы ускорить вывод на экран? В какую сторону смотреть и копать? XML? или еще что-то? Спасибо. |
| Автор: ReFleX 29.11.2004, 16:37 |
| Попробуй указывать не все ячейки, а только нужные, если это возможно! Это может ускорить процесс, но не намного |
| Автор: Измайлов Ф.В. 1.12.2004, 13:16 |
| Как я и предполагал (недаром поставил +???) решение лежит в использовании связки MSSQL+XML+XSL. Вывод 6700 записей на экран занимает не более 2 секунд. НО.. это по внутренней сети. Если кого заинтересует решение, пишите - felix(at)lgn.ru С уважением, Измайлов Ф.В. |
| Автор: Akina 1.12.2004, 14:45 | ||
продавать собрался, что ли? а коли нет - запости идею хотя бы, скелет решения, если весь код длинноват... А в простейшем случае быстрое решение - формировать каждую строку как отдельную таблицу. И прорисовываются оне на экране по мере закачки. Есссно таблицы без разрывов и с фиксированной шириной колонок... сделал, а после ищи изящное решение... |
| Автор: Измайлов Ф.В. 2.12.2004, 12:23 |
| Не.. продавать конечно не собираюсь. просто не знаком с правилами форума.. новайс Скелет решения, на словах. 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"/>&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"?> |