Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Еще один массив checkBox-ов 
V
    Опции темы
VisMaster
Дата 6.8.2009, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 16.3.2007
Где: СПб

Репутация: нет
Всего: нет



Здравствуйте,

Знаю что вопрос уже задавался, но все что я просмотрел не помогло мне в решении данной задачи.

Есть таблица, которая заполняется данными из БД. В таблице 3 столбца: Тип, наименование и автоматически генерируемый checkBox для данной строки.
Код

<bean:define id="eventId"><c:out value="${theCurrentFormBean.event.id}"/></bean:define>

<sql:query var="result" dataSource="jdbc/WebApplication">
       SELECT "SA"."CONFIG_CHAR"."CONFIG_CHAR_N", "SA"."ITEM_CONFIG"."ITEM_CONFIG_RMK"
FROM "SA"."ITEM", "SA"."INCIDENT", "SA"."ITEM_CONFIG", "SA"."CONFIG_CHAR" 
WHERE ( "SA"."INCIDENT"."ITEM_ID" = "SA"."ITEM"."ITEM_ID" ) 
AND ( "SA"."ITEM_CONFIG"."ITEM_ID" = "SA"."ITEM"."ITEM_ID" ) 
AND ( "SA"."ITEM_CONFIG"."CONFIG_CHAR_ID" = "SA"."CONFIG_CHAR"."CONFIG_CHAR_ID" ) 
AND ( "SA"."INCIDENT"."INCIDENT_ID" =  ?
  <sql:param value="${param.eventId}"/>)
    </sql:query>
    
           <form name="Forma">
                Описание атрибутов Объекта: <input type="button" value="Добавить в описание действия" name="AddButton"  onclick="operation();"/>
                <BR><BR>
                <TABLE id="TableConfig" >
                        <thead>
                            <tr class="fixed">
                                <th >Тип атрибута </th>
                                <th >Описание атрибута</th>
                                <th >Наличия</th>
                            </tr>
                        </thead>
                    <tbody>
                        <c:forEach var="row" items="${result.rowsByIndex}">
                        <TR>
                            <c:forEach var="column" items="${row}" begin="0" end="2">
                                    <TD id="ValueConfig"><c:out value="${column}"/></TD>                                
                            </c:forEach>
                            <TD ><input type="checkbox" id="CheckBoxConfig" name="aasdfasdf" value="NO" checked="checked"/></TD>
                        </TR>
                        </c:forEach>
                    </tbody>
                </TABLE>
            </form>  
</c:if>  


После вывода на форму, пользователь может снять несколько галочек с отмеченных checkBox-ов.
Вопрос как мне узнать  какие галочки отмечены. и Если CheckBox отмечен,  то взять соответствующие значения из таблица и прописать их в строковую переменную

Пытался сделать так:
Код

    <script type="text/javascript">
    function operation()
    {
        objSel=document.getElementById("CheckBox");
        String [] array = request.getParamterNames("CheckBox");

        for(int i=0;i<array.Length;i++)
        {
            alert(array[i].value);
        }
                
    /*    var tr1 = document.getElementById('TableConfig').getElementsByTagName('tr');
     
        var i = 0;                
        while(i < tr1.length)
            {
                var td123 = tr1[i].getElementsByTagName('td');
                var value = parseFloat(td123[1].innerHTML))
                alert(value);            
                i++;
         }     */           
    }
    </script>

PM MAIL   Вверх
ecologist
Дата 7.8.2009, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 452
Регистрация: 28.2.2007

Репутация: 5
Всего: 9



Дать имена чекбоксам в виде уникальных ID - например checkBox_<ID>.
Когда придут параметры в запросе их можно будет разобрать по именам и получить реальные ID.
PM MAIL   Вверх
VisMaster
Дата 7.8.2009, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 16.3.2007
Где: СПб

Репутация: нет
Всего: нет



был бы благодарен за пример, в теории я знаю как это сделать, проблема с построением самого синтаксиса.

1. Как checkBox-ам прописать, инкрементное значение?
2. Как потом по этим Значениям обратиться с свойству Cheked, чтобы узнать отмечен он или нет.
PM MAIL   Вверх
VisMaster
Дата 7.8.2009, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 16.3.2007
Где: СПб

Репутация: нет
Всего: нет



немного разобрался 
Таблицу читаю следующим образом:
Код

function operation()
    {
        var objSel = document.getElementById("TableConfig");
        for(var i=1;i<objSel.rows.length;i++)
        { 
             var x=objSel.rows[i].cells;
             var y = x[2].innerHTML;  --- третья колонка в таблице гда находится CheckBox 
              alert(y);
        }
    }


При этом получаю сообщения такого вида:
Цитата

<input id="[Ljava.lang.Object;@fc8f35" name="aasdfasdf" value="NO" checked="checked" type="checkbox">

Но так я получаю не объекты checkBox а их html код, и если я сниму галочки на них от этого код не изменится.


Вопрос  как мне в JSTL объявить переменную типа int и присваивать ее id checkBox-ов соответственно наращивая ее

Вот пример того что я хочу:

Код

<c:forEach var="row" items="${result.rowsByIndex}">
                        <TR>
int ret=0; //объявляю переменную типа Integer 
                            <c:forEach var="column" items="${row}" begin="0" end="2">
                                    <TD id="ValueConfig"><c:out value="${column}"/></TD>                                
                            </c:forEach>
                            <TD ><input type="checkbox" id=ret name="aasdfasdf" value="NO" checked="checked"/></TD> // здесь присвоил Id  checkBox значение параметра ret
ret++; // здась нарастил на один значение параметра ret
                        </TR>
</c:forEach>


Не подскажите как мне это сделать?



Это сообщение отредактировал(а) VisMaster - 7.8.2009, 15:36
PM MAIL   Вверх
VisMaster
Дата 8.8.2009, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 16.3.2007
Где: СПб

Репутация: нет
Всего: нет



неужели  никто не подскажет как это сделать?
PM MAIL   Вверх
VisMaster
Дата 11.8.2009, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 16.3.2007
Где: СПб

Репутация: нет
Всего: нет



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

Код JSTL почти не изменился
 
Код

<bean:define id="eventId"><c:out value="${theCurrentFormBean.event.id}"/></bean:define>   // принимаю параметр

<sql:query var="result" dataSource="jdbc/NNZJBOSS">
        SELECT "SA"."CONFIG_CHAR"."CONFIG_CHAR_N", "SA"."ITEM_CONFIG"."ITEM_CONFIG_RMK"
        FROM "SA"."ITEM", "SA"."INCIDENT", "SA"."ITEM_CONFIG", "SA"."CONFIG_CHAR" 
        WHERE ( "SA"."INCIDENT"."ITEM_ID" = "SA"."ITEM"."ITEM_ID" ) 
        AND ( "SA"."ITEM_CONFIG"."ITEM_ID" = "SA"."ITEM"."ITEM_ID" ) 
        AND ( "SA"."ITEM_CONFIG"."CONFIG_CHAR_ID" = "SA"."CONFIG_CHAR"."CONFIG_CHAR_ID" ) 
        AND ( "SA"."INCIDENT"."INCIDENT_ID" =  ?
        <sql:param value="${param.eventId}"/>)
    </sql:query>
        
           <form name="Forma">
               <input type="button" value="Добвить атрибуты" name="AddButton"  onclick="VneshniyOsmotr();"/>
                <BR><BR>
                <TABLE id="TableConfig">
                        <thead>
                            <tr class="fixed">
                                <th>ТИП </th>
                                <th>Наименование</th>
                                <th>Наличие</th>
                            </tr>
                        </thead>
                    <tbody>

                        <c:forEach var="row" items="${result.rowsByIndex}">
                        <TR>
                                  <c:forEach var="column" items="${row}" begin="0" end="2">
                                    <TD id="ValueConfig"><c:out value="${column}"/></TD>            // здесь заполняю таблицу текстовыми значениями                    
                                  </c:forEach>
                            <TD><input type="checkbox" name="MyCheck" value="ON" checked="checked" /></TD>       // Прописываю для каждой строки таблицы свой checkBox
                        </TR>
                        </c:forEach>
                    </tbody>
                </TABLE>
            </form>  


А вот код собственно обработчика:
Код

<script type="text/javascript">
    function VneshniyOsmotr()
    {
        atributes=document.forms[0].MyCheck;
        txt="";
        for (i=0;i<atributes.length;++ i)
          {
              if (atributes[i].checked)
                {
                    var x=document.getElementById('TableConfig').rows[i+1].cells;
                 txt=txt + x[0].innerHTML + " - " + x[1].innerHTML + "\r\n ";
                }
          }
        var objSel = document.getElementsByName("remarks");  
        objSel.item(0).value = txt;
    }
    </script>

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0737 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.