Решено Присваивание Компоненту Id В Data Table

Тема в разделе "Lotus - Xpages", создана пользователем JohnLemon, 30 дек 2014.

  1. JohnLemon

    JohnLemon Well-Known Member

    Регистрация:
    20 авг 2014
    Сообщения:
    274
    Симпатии:
    5
    Здравствуйте, может кто подсказать почему в Repeat добавляется к id объекта index name а в data table нет, вот код:
    Код (Text):
    <?xml version="1.0" encoding="UTF-8"?>
    <xp:view xmlns:xp="http://www.ibm.com/xsp/core">

    <xp:repeat id="rAnal" rows="30" style="width:auto" indexVar="rIndx" repeatControls="true" first="0" value="#{java script:return 5;}">
    <xp:inputText id="iAnal_${rIndx}"></xp:inputText>
    <xp:br></xp:br>
    </xp:repeat>
    <xp:br></xp:br>
    <xp:br></xp:br>

    <xp:dataTable id="dataTable1" rows="30" indexVar="tIndx" first="0" value="#{java script:return 5;}">
    <xp:column id="column1">
    <xp:inputText id="input_${tIndx}"></xp:inputText></xp:column>

    </xp:dataTable></xp:view>
    Подскажите если не сложно как присвоить уникальные ид объектам в Data Table что бы потом вытянуть данные из них ???
     
  2. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    567
    Симпатии:
    214
    Добавляется. Только в таблице индекс элемента формируется по-другому: напр. id="view:_id1:dataTable1:0:column1:input_"
    Доступ можно получить "влоб" - как ячейку таблицы (по индексу строки-столбца)
    Или по ID элемента.
     
  3. JohnLemon

    JohnLemon Well-Known Member

    Регистрация:
    20 авг 2014
    Сообщения:
    274
    Симпатии:
    5
    Как мне в данном случае обратиться к конкретному input на ssjs??
     
  4. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Очередной воздушный замок?

    Откуда будет проходить изменение данных?
    Пример приближенный к действительности можно? Нарисуй хотя бы
     
  5. JohnLemon

    JohnLemon Well-Known Member

    Регистрация:
    20 авг 2014
    Сообщения:
    274
    Симпатии:
    5
    Вопрос уже решил, через генерацию собственных компонентов в таблицу, но все таки хотелось бы узнать
    Код (Text):
    <xp:dataTable id="dataTable1" rows="30" indexVar="tIndx" first="0" value="#{java script:return 5;}">
    <xp:column id="column1">
    <xp:inputText id="input_${tIndx}"></xp:inputText></xp:column>
    </xp:dataTable>
    Ну например как мне при нажатии на кнопку записать в sessionScope.temp значение из инпута который во второй строке таблицы.
     
  6. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Говорю же.. очередной воздушный замок.
    Если в каждой строке таблицы есть своя кнопка - никаких танцов с бубнами над именами компонентов делать не надо.
    Как определяется с какой строки надо брать данные? А вдруг надо взять из третьей строки?
     
  7. JohnLemon

    JohnLemon Well-Known Member

    Регистрация:
    20 авг 2014
    Сообщения:
    274
    Симпатии:
    5
    Вот с кнопками как раз проблема есть маленький вопросик пытаюсь сделать кнопку и присвоить каждой свой код, нашел в гугле что то подобное
    Код (Text):
    <?xml version="1.0" encoding="UTF-8"?>
    <xp:view xmlns:xp="http://www.ibm.com/xsp/core">

    <xp:button
    value="Add Event"
    id="button1">
    <xp:eventHandler event="onclick" submit="true"
    refreshMode="complete">
    <xp:this.action>
    <![CDATA[#{java script:
    var event = new com.ibm.xsp.component.xp.XspEventHandler();
    var code = "#{java script:"+getComponent('inputText1').setValue('111')+"}"
    var action = facesContext.getApplication().createMethodBinding( code, null );

    event.setAction(action);
    event.setSubmit(true);
    event.setEvent("onclick");
    event.setRefreshMode("complete");

    var cmp = getComponent("button2");
    cmp.getChildren().add( event );

    }]]>
    </xp:this.action>
    </xp:eventHandler></xp:button>
     
    <xp:button
    value="Exec Event"
    id="button2">
    </xp:button>
    <xp:inputText id="inputText1"></xp:inputText></xp:view>
    Но не могу понять почему код выполняется сразу а не по нажатию на вторую кнопку
    грешу что
    Код (Text):
    var action = facesContext.getApplication().createMethodBinding( code, null );
    выполняется сразу, что нужно сделать что бы присвоить код кнопке и он срабатывал только когда я ее нажимаю???
     
  8. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Ты нормальный набросок показать можешь?
    Не отдельные части, а все в комплексе
     
  9. JohnLemon

    JohnLemon Well-Known Member

    Регистрация:
    20 авг 2014
    Сообщения:
    274
    Симпатии:
    5
    Не сейчас не могу, нет проекта по рукой )
    В данном примере же все понятно, я нажимаю на кнопку а она не код другой кнопке присваивает а выполняет его почему то ((

    Добавлено: вообще мне нужно что бы при загрузке страницы создавались кнопки и им присвоить разный код
    Добавляю так, в цикле, в afterPageLoad:
    Код (Text):
    var btnDel:com.ibm.xsp.component.xp.XspCommandButton = new com.ibm.xsp.component.xp.XspCommandButton();
    btnDel.setValue("Save");
    btnDel.setId("saveButton"+i);
    var code = "#{java script:"+getComponent('labelAnalA'+rowNum).setValue('111'+rowNum)+"}"
    var action = facesContext.getCurrentInstance().getApplication().createMethodBinding( code, null );
    var newEvent:com.ibm.xsp.component.xp.XspEventHandler = new com.ibm.xsp.component.xp.XspEventHandler();
    newEvent.setSubmit(true);
    newEvent.setRefreshMode("complete");
    newEvent.setEvent("onclick");
    newEvent.setAction(action);
    btnDel.getChildren().add(newEvent);
    tdNomerA.getChildren().add(btnDel);
    Но он выполняет весь код сразу при загрузке странице
     
  10. JohnLemon

    JohnLemon Well-Known Member

    Регистрация:
    20 авг 2014
    Сообщения:
    274
    Симпатии:
    5
    Я так понимаю косяк в том что
    Код (Text):
    var code = "#{java script:"+getComponent('labelAnalA'+rowNum).setValue('111'+rowNum)+"}"
    выполняется сразу, как эту строку добавить как код для кнопки ???
     
  11. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Да не нужен проект... сделай набросок... ну в паинте нарисуй хоть...
     
  12. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Ну а вообще касательно твоего кода... кроме копипаста надо еще немного думать.
    Ты формируешь код, который должен быть исполнен, а следовательно - это строка.
    Значит код должен выглядеть так
    Код (Javascript):
    var code = "#{java script: getComponent('labelAnalA').setValue('111')}"
    Но и это все равно выдаст ошибку, потому что код "оторван" от контекста и твой код должен выглядеть так
    Код (Javascript):
    var code = "#{java script: var tmp = com.ibm.xsp.util.FacesUtil.getComponentFor( view, 'inputText1'); tmp.setValue('111') }"
    По этому в очередной раз тебе говорю - не выдумывай колесо!
     
  13. JohnLemon

    JohnLemon Well-Known Member

    Регистрация:
    20 авг 2014
    Сообщения:
    274
    Симпатии:
    5
    А как можно обратиться к текущему объекту ?? Хотя бы получить его ид
     
  14. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    По текущему элементу this.id
     
Загрузка...
Похожие Темы - Присваивание Компоненту Data
  1. orion
    Ответов:
    1
    Просмотров:
    1.123
  2. Dock1100
    Ответов:
    6
    Просмотров:
    3.337

Поделиться этой страницей