Hi web2py,

I am a fairly experienced coder, but am new to web-programming and web2py. 
Ihave read the documentation, bought the book, and done quite a few of the
examples which have run OK. I am coding on Windows7 OS - using 
Firefox browser.

I am trying to modularise my current demo web2py web-app, so that when i click
on a webGrid (a 'view' link) on the right-hand-side of page, my column on the
left-hand-side of the page updates to show the details of the selected
patient/scan row. Before trying this, I have got it to work so the whole page
updates when I click on that link, but to progress this further, I want only 
the left-hand column to update. I am trying to adapt the example from the book
(Chapter 2 - Designing Modular Applications) and the example from the
'Components' section of the online docs
(http://web2py.com/books/default/chapter/29/12).

Currently, the initial index page loads OK, with the left hand column showing
the default (scanId=1) record. It's the click on 'view' which doesn't work. I 
am trying 2 options and they both give me a blank 'none' page, when I click 
on the 'view' link. I can't figure out the mistake I am making and have been
working on it for over a day now. The code is below.

As you can see, I think its because I am still unclear on how the load and
'response.ajax = 'web2py_component(' calls work.  
Hope you can help.

angle



******************************
******* DEFAULT.PY ********
******************************

def index():
    import webgrid
    from gluon.tools import Crud
    crud = Crud(icc_db)
    grid=webgrid.WebGrid(crud)
    grid.datasource = icc_db(icc_db.scan.id>0)
    grid.pagesize = 20
    grid.action_links = ['view']
    grid.action_headers = ['view']
    grid.enabled_rows = ['header','pager','footer']
    grid.crud_function = 'view'
    
   
    #if request.controller == 'default' and request.function == 'index':
    #  if request.args:
    #     crud.settings[request.args(0)+'_next'] = URL('index')
        
       
    return dict(grid=grid())
    
def view():
  vars1={'scanId':(request.args[2])}
  
  ##### THIS IS WHERE I AM TRYING VARIOUS OPTIONS - RETURN 'NONE' page ####

 
LOAD('default','post.load',ajax=True,target='patient',vars={'scanId':(
  request.args[2] or 1)})
  
  #response.ajax = \
    'web2py_component("%s","patient",ajax=True,vars=vars1)' % URL
('patient')

  #response.ajax =
'web2py_component("post.load",ajax=True,target="patient",vars={"scanId":(
  request.args[2] or 1)})' % URL ('patient')

 
def post():  #This works OK...

    patientId = (icc_db(icc_db.scan.id ==
request.vars.scanId).select(icc_db.scan.patient_fk)[0].patient_fk or -1)
    
    ...

    return dict(patientScanRecs = patientScanRecs, 
       scanImageRecs = scanImageRecs)

...

************************************************************************
* Views/Layout.html  (webGrid + the left column) *
************************************************************************

 <div id="displayBox_centre">
      {{=grid}}
      
 </div>
 
 <div id="displayBox_left">
        {{ if request.args: }}
          {{ =LOAD('default','post.load',ajax=True,target='patient',vars=
{'scanId':(request.args[2] or 1)}) }}
        {{ else: }}
          {{
=LOAD('default','post.load',ajax=True,target='patient',
  vars={'scanId':1}) }}
        {{pass}}
     
 </div>

************************************
****** Views/default/post.load ******
************************************

<H2> Patient ID: {{=patientScanRecs[0].patient.id}} </H2>
<H2> Diagnostic Group:  {{=patientScanRecs[0].patient.DiagnosticGroup}}</H2>
<H2> Source:{{=patientScanRecs[0].patient.Source}} </H2>

<div class="scanList">

    {{for patient_scan in patientScanRecs:}}  
    <div class="scan">
      <H2>Age at Scan {{=patient_scan.scan.ageAtScan}}</H2>
      <H2>Date of Scan {{=patient_scan.scan.dateOfscan}} </H2>
      <div class="scanImageList">
         {{for scan_image in scanImageRecs:}}  
           ...
         {{pass}}
       </div>
     </div>
    </div>
    {{pass}}

</div>




Reply via email to