• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

DataGrid и DynamicContent

M

motogarri

Привет.
Пытаюсь прикрутить datagrid к странице, как аналог вычисляемой подформы в нотесе. Цель - single page app.
Делаю xe:applicationLayout, в нём навигатор и xe:dynamicContent. Все работает отлично, кроме datagrid, а он-то как раз и нужен. При выборе кастом контрола с гридом, грид ломается... Будто слетает с него CSS-ка. Не могу лучше объяснить. Что-то не могу файл приложить к теме. Ни .nsf ни .zip
 
M

motogarri

"Файл с этим расширением загружать нельзя"
размер 7zip - 29 kb
размер nsf - 440 kb

На гугл-диск положил нсфку
 
M

motogarri

Кастом-контролы в dynamicContent вычисляются. Да и по коду не понятно будет. Все там правильно. И cc с гридом тоже в порядке. Если вне dynamicContent его отображать - все нормально. Это надо базу смотреть, чтобы понятно было.
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
34
1
<xp:eventHandler event="onItemClick" submit="true"
refreshId="dynamic_content" refreshMode="complete">
..........................

2
<xp:panel xp:key="grid" style="height:222px">
<xc:ccDatagrid></xc:ccDatagrid>
</xp:panel>

3
height в процентах не прокатит, прогресс - будет

ЗЫ )))) смищщьно, пишу словами - гриду положить в панель
ЗЗЫ просто zip нормально ест
 
Последнее редактирование:
M

motogarri

Значит дело было в refreshMode="partial".
Очень жаль. Все задумывалось как раз для того, чтобы не перегружать всю страницу. Каким-то образом partial refresh портит грид... Пороюсь еще, может найду, как обойти
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
34
Значит дело было в refreshMode="partial".
Очень жаль. Все задумывалось как раз для того, чтобы не перегружать всю страницу. Каким-то образом partial refresh портит грид... Пороюсь еще, может найду, как обойти
с тремя СС то ;)
клади в панели-дивы и управляй видимостью, делов то
 
M

motogarri

Не, там много будет)) Это демо-база для форума специально сделал.
 
M

motogarri

Проблема в том, что на страницу не загружаются стили грида
HTML:
<link rel="stylesheet" type="text/css" href="/xsp/.ibmxspres/.mini/css/@Oa&@Ob&@Da&@Ib&@Ta&@Tb&2TexspSF.css&2OgmetalTheme.css&Wdojoroot/dojo/resources/dojo.css&Wdojoroot/dojox/grid/resources/Grid.css&Wdojoroot/dojox/grid/resources/tundraGrid.css.css">
Попробовал изначально их грузить так:
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
    xmlns:xe="http://www.ibm.com/xsp/coreex"
    xmlns:xc="http://www.ibm.com/xsp/custom">

    <link rel="stylesheet" type="text/css" href="/.ibmxspres/dojoroot/dijit/themes/tundra/tundra.css"></link>
    <link rel="stylesheet" type="text/css" href="/.ibmxspres/dojoroot/dojox/grid/resources/Grid.css.css"></link>
    <link rel="stylesheet" type="text/css" href="/.ibmxspres/dojoroot/dojox/grid/resources/tundraGrid.css.css"></link>

<xe:applicationLayout id="applicationLayout1">
. . .
На веб страницу стили не загрузились. Если я в Elements браузера вручную добавляю линк на стили, грид начинает отображаться, как положено.

Добавил на страницу пустой грид, и стили стали подгружаться. Как их загрузить на страницу при открытии?
 
Последнее редактирование модератором:

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
css.css - это так надо?
 
M

motogarri

lmike, не знаю, как надо.

< rel="stylesheet" type="text/css" href=" ... Wdojoroot/dojox/grid/resources/tundraGrid.css.css"
Так загружаются стили в html коде страницы, где открывается один грид. А как правильно загрузить css с сервера я не понял.
Зато вот что понял:
Когда открывается страница на ней нет компонентов, помещённых в DynamicContent. Потом по запросу dynamicContent.show() и частичному обновлению, подгружается сам контент, но при этом partial refresh тянет с сервера только данные, без стилей.
1. Контрол view отображается корректно, потому что стили к нему применяет сервер и в качестве данных всю html разметку таблицы отдаёт клиенту.
2. Грид рисуется клиентским скриптом на клиенте и стили к нему применяются только те, что уже ранее были загружены на страницу. Потому при частичном обновлении грид просто парсит json и отображает его без стиля.
Я правильно понимаю?
И еще. Как загрузить на страницу без компонента DataGrid вот эту штуку?
HTML:
<link rel="stylesheet" type="text/css" href="/xsp/.ibmxspres/.mini/css/@Oa&@Ob&@Da&@Ib&@Ta&@Tb&2TexspSF.css&2OgmetalTheme.css&Wdojoroot/dojo/resources/dojo.css&Wdojoroot/dojox/grid/resources/Grid.css&Wdojoroot/dojox/grid/resources/tundraGrid.css.css">
Причем первая часть линка уже присутствует:
/xsp/.ibmxspres/.mini/css/@Oa&@Ob&@Da&@Ib&@Ta&@Tb&2TexspSF.css&2OgmetalTheme.css
так что ее не надо. Нужны только стили грида
 
Последнее редактирование модератором:
R

romych2004

Я не понял, не работает в нотесе или в браузере?
Попробуйте поиграйтесь с агрегацией ресурсов, убрать/добавить


Печаль беда, при партиал рефреше к нам приходит код:
Код:
<link rel="stylesheet" type="text/css" href="/xsp/.ibmxspres/dojoroot-1.9.7/dojox/grid/resources/Grid.css">
<link rel="stylesheet" type="text/css" href="/xsp/.ibmxspres/dojoroot-1.9.7/dojox/grid/resources/tundraGrid.css">

Но файлы не подтягиваются. Подозреваю dojo как-то криво работает, более глубоко нет сейчас возможности искать проблему

Советую взять текст из и tundraGrid.css (версию доджо поменяйте на свою), пихнуть их в один или в два файла - это как хотите и подключить к main.xsp, а не к кастом контролу

Если Вам надо чтобы цсски грузились именно после загрузки кастом контрола, то на он клиент лоад кастома ручками вставлять в хеад страницы эти цсски

Пока чет других вариантов не вижу.. если что - спрашивайте
 
Последнее редактирование модератором:
M

motogarri

Не работает в икс пейдже. Единственный вопрос, как загрузить на страницу вот эту штуку:
< rel="stylesheet" type="text/css" href="/xsp/.ibmxspres/.mini/css/@Oa&@Ob&@Da&@Ib&@Ta&@Tb&2TexspSF.css&2OgmetalTheme.css&Wdojoroot/dojo/resources/dojo.css&Wdojoroot/dojox/grid/resources/Grid.css&Wdojoroot/dojox/grid/resources/tundraGrid.css.css">

В качестве костыля я сейчас вставил пустой грид, который мне подтягивает на страницу стили еще до того, как заработает Dynamic Content
Словами сложно объяснить проблему, это надо базу смотреть. В первом посте ссылка.
 
Последнее редактирование модератором:
R

romych2004

Не работает в икс пейдже. Единственный вопрос, как загрузить на страницу вот эту штуку:
< rel="stylesheet" type="text/css" href="/xsp/.ibmxspres/.mini/css/@Oa&@Ob&@Da&@Ib&@Ta&@Tb&2TexspSF.css&2OgmetalTheme.css&Wdojoroot/dojo/resources/dojo.css&Wdojoroot/dojox/grid/resources/Grid.css&Wdojoroot/dojox/grid/resources/tundraGrid.css.css">

В качестве костыля я сейчас вставил пустой грид, который мне подтягивает на страницу стили еще до того, как заработает Dynamic Content
Словами сложно объяснить проблему, это надо базу смотреть. В первом посте ссылка.
Прошу прощения, отредактировал прошлое сообщение, ответ там

Подтягивать пустой грид у меня тоже как вариант был, но у меня почему-то после этого не грузится нужный грид :) может потому что пустому надо хоть какие-то данные дать
 
  • Нравится
Реакции: motogarri

alexas1

Green Team
10.04.2014
1 202
225
BIT
34
на мэйн:

<xp:this.resources>
<xp:styleSheet href="/.ibmxspres/dojoroot/dojox/grid/resources/tundraGrid.css"></xp:styleSheet>
</xp:this.resources>
--------------------------
с партиал работает
ток это тоже костыль - заявленное в коробке, обязано работать из коробки
ресурсы грузить\выгружать можно по необходимости, если уж оптимизировать
кста, что бы грузить СС и XP на мэйн совсем нет необходимости использовать геморный "Dynamic Content" , тут эта тема уже поднималась
 
  • Нравится
Реакции: motogarri
M

motogarri

Работает и так и так, спасибо.
что бы грузить СС и XP на мэйн совсем нет необходимости использовать геморный "Dynamic Content" , тут эта тема уже поднималась
Поищу, гляну. Хотя сейчас и так устраивает.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!