2016-08-21 2 views
0

내 web2py 응용 프로그램의 컨트롤러에서 등록 할 학생의 이름을 외부 DB에서 읽습니다. 결과 목록을 통해 반복하여 목록 요소를 새 목록에 추가합니다. 양식의 Web2py 테이블에 열 추가

for student in pupils_query: 
    attendance_list.insert(counter, [student[0], student[1], student[2], student[3]]) 
    counter += 1 
counter = 0 

그런 다음 각 학생에 대한 지금까지 다른 테이블에서 하루에 출석 코드를 읽고, attendance_list하도록 추가 : 이제

for attendance_code in attendance_result: 
     attendance_list[counter].append(attendance_code) 

, 나는 양식을 만들고 싶어거야 이 모든 것에서, 각 학생의 출석 코드를 텍스트 입력에 표시하는 표를 사용하여 (잘못된 경우 업데이트 할 수 있도록) 그러면 현재의 수업 코드 입력을위한 드롭 다운 메뉴가 나타납니다.

form=FORM(TABLE(*[TR(*rows) for rows in attendance_list])) 

하지만 같은 뭔가 새로운 '행'형태의 항목을 추가 할 수없는 것 : 나는 형태로 테이블을 작성하는 양식 및 표 도우미를 사용하고

  select = "SELECT("+ main_reg_list +")" 
      attendance_list[counter].append(select) 

여기서 main_reg_list는 허용되는 출석 코드 사전 (또는 물론 다른 모든 양식 입력 요소)입니다.

요약하면 목록 목록에서 TABLE 도우미로 만든 테이블에 새로운 TD를 추가하는 중입니다. 나는이 문제를 극복하는 최초의 사람이 아닐 것입니다.

+0

attendance_list, attendance_code, main_reg_list의 내용에 대한 예를 들려 줄 수 있습니까? 당신이 정확히 원하는 형태를 얻지 못하고 있습니다. 예가 도움이 될 수 있습니다. –

+0

@ Gaurav에 답해 주셔서 감사합니다. 그래서 attendance_list는 [[forename, surname, attendance_code_1 ... attendance_code_n]]와 같은 학생의 출석 코드가있는 목록의 목록입니다. attendance_code는 '/', 'N', '3'등일 수 있으며, 지금까지의 출석을 나타내는 코드 일 수 있습니다. Reg_main_list는 가능한 출석 코드 사전입니다. 아이디어는 내가 지금 수업을위한 코드를 선택할 수 있도록 SELECT 양식 요소가 뒤 따르는 학생 표, 지금까지의 출근 코드를 원한다는 것입니다. 'sid', 'snail', '/', '4', '3', '5', '/'이 강좌 드롭 다운 –

답변

0

나는 당신이 원하는 것에 대해 아직도 명확하지 않습니다. 나는 학생 정보 테이블을 원하고 한 칼럼에서 드롭 다운을 원한다고 생각합니다. 다음 이미지 similat 뭔가가 양식 위

enter image description here

이 코드를 다음에서 생성됩니다. 나는 코드가 당신을 도울 것입니다 다음 희망 :

# controller/default.py 

def index(): 
    # Dummy attendance list, list after appending attendance code 
    attendance_list = [['stud_id_1', 'first_name_1', 'last_name_1', 'attendance_code_1'], 
         ['stud_id_2', 'first_name_2', 'last_name_2', 'attendance_code_2'], 
         ['stud_id_3', 'first_name_3', 'last_name_3', 'attendance_code_5'], 
         ['stud_id_4', 'first_name_4', 'last_name_4', 'attendance_code_4']] 

    possible_att_code = ['attendance_code_1', 'attendance_code_2', 'attendance_code_3', 'attendance_code_4', 'attendance_code_5'] 

    # initialise form_rows with Table heading 
    form_rows = [THEAD(TR(TH('ID'), TH('First Name'), TH('Last Name'), TH('Attendence Code')))] 

    for attendance in attendance_list: 
     attendance_code_dropdown = _get_dropdown(attendance[0], attendance[3], possible_att_code) 

     td_list = [TD(attendance[0]), TD(attendance[1]), TD(attendance[2]), 
        TD(attendance_code_dropdown)] 
     table_row = TR(td_list, _id='row_' + attendance[0]) 
     form_rows.append(table_row) 

    # Form submit button 
    form_rows.append(TR(INPUT(_type='submit'))) 
    form = FORM(TABLE(*form_rows), _name='student_attendance', 
       _id='student_attendance') 

    if form.accepts(request, session): 
     # Write code to update record 
     pass 
    return dict(form=form) 


def _get_dropdown(stud_id, att_code, possible_att_code): 

    option_list = [] 
    for pac in possible_att_code: 
     if pac == att_code: 
      option_list.append(OPTION(pac, _value=pac, _selected='selected')) 
     else: 
      option_list.append(OPTION(pac, _value=pac)) 

    return SELECT(*option_list, _name=stud_id) 

<!-- views/default/index.html --> 
{{extend 'layout.html'}} 

{{=form}} 

내 가정이 정확합니까? 아니면 다른 것을 원하니? 코드를 이해하지 못했다면 코멘트.

+0

안녕하세요 Gaurav, 순전히. 나는 각 수업마다 출석 코드를 추가하고 있습니다. 나는 이것을 나중에 시험해보고 알릴 것이다. 정말 고마워. –

+0

안녕 Gaurav, 나는이 코드를 시험해보고있다. 그 날이 다가 감에 따라 각 행 (td_list의)에 이전에 기록 된 코드가 추가되기를 원하기 때문에 'Henry', 'Hedgehog', '/', '4', '3 ','5 ','/ ', 그래서 나는 목록에 새로운 TD (lesson_grade)를 추가해야한다는 것을 의미합니다. 나는 그들을 추가 할 수는 있지만 새로운 TD 요소로 다루어지기를 원하며 "TD (attendance_code)"처럼 화면에 나타나지 않고, 똑같은 방향으로 앞으로 나아갈 것인가? –

+0

Gaurav, 효과가있었습니다! 행에 새 양식 요소를 동적으로 추가 할 수 있습니다. 너없이 그것을 할 수 없었다! 매우 감사합니다. –