2012-10-17 55 views
0

我正在構建一個edifact翻譯器/編輯器。爲了顯示現有的翻譯,我有以下控制器:web2py在表格中添加行

import shutil 
import sys 
import fileinput 

def edit_datafile(): 
    #inlees gedeelte van een bestaand datatype 
    file = open('/home/wouter/DESADVCB.pcf', 'r') 
    datas = [] 
    data = {} 
    row = {} 
    j = 1 
    for line in file: 
     meg = line.strip().split(':', 3) 
     if line.startswith('#'): 
      c = 1 
      unmark = line.strip().split('#') 
      datas.append('#') 
      datas.append(unmark[1]) 
      data[j,c] = datas 
      datas=[] 
      j = j+1 
     else: 
     if '.' in meg[0]: 
       t = meg[0].split('.') 
       if '+' in t[0]: 
        a = t[0].split('+') 
        datas.append(a[0]) 
        datas.append(a[1]) 
       else: 
        datas.append(t[0]) 
        datas.append(t[1]) 
       try: 
        t[2] 
        datas.append(t[2]) 
       except IndexError, e: 
        datas.append('') 

     else: 
      if '+' in meg[0]: 
       a = meg[0].split('+') 
       datas.append(a[0]) 
       datas.append(a[1]) 
      else: 
       datas.append(meg[0]) 
       datas.append('') 
      datas.append('') 
      datas.append('')    
     datas.append(meg[1]) 
     datas.append(meg[2]) 
     try: 
      meg[3] 
      if ':' in line: 
       reg = meg[3].strip().split(':') 
       c = 1 
       for teg in reg: 
        seg = teg.split('=') 
        if '.' in seg[0]: 
         t = seg[0].split('.') 
         datas.append(t[0]) 
         datas.append(t[1]) 
         try: 
          t[2] 
          datas.append(t[2]) 
         except IndexError, a: 
          datas.append('') 
         try: 
          t[3] 
          datas.append(t[3]) 
         except IndexError, a: 
          datas.append('') 
          s= seg[1].split('.', 3) 
          datas.append(s[0]) 
          datas.append(s[1]) 
          datas.append(s[2]) 
          datas.append(s[3]) 
          data[j,c]=datas 
         c = c+1 
        else: 
         datas.append(seg[0]) 
         datas.append('') 
         datas.append('') 
         datas.append('') 
         s= seg[1].split('.', 3) 
         datas.append(s[0]) 
         datas.append(s[1]) 
         datas.append(s[2]) 
         datas.append(s[3]) 
         data[j,c]=datas 
         c= c+1 
        datas=[] 
       j = j+1 
      else: 
       seg = meg[3].strip().split('=') 
       if '.' in seg[0]: 
        t = seg[0].split('.') 
        datas.append(t[0]) 
        datas.append(t[1]) 
        try: 
         t[2] 
         datas.append(t[2]) 
        except IndexError, a: 
         datas.append('') 
        try: 
         t[3] 
         datas.append(t[3]) 
        except IndexError, a: 
         datas.append('') 

       else: 
        datas.append(seg[0]) 
        datas.append('') 
        datas.append('') 
        datas.append('') 
       s= seg[1].split('.', 3) 
       datas.append(s[0]) 
       datas.append(s[1]) 
       datas.append(s[2]) 
       datas.append(s[3]) 
       data[j] = datas 
       datas=[] 
       j = j+1 
     except IndexError, a: 
      c = 1 
      datas.append('') 
      datas.append('') 
      datas.append('') 
      datas.append('') 
      datas.append('') 
      datas.append('') 
      datas.append('') 
      datas.append('') 
      data[j,c] = datas 
      datas=[] 
      j = j+1 
# form om regels toe te voegen 
form_ar = FORM(
      TABLE(THEAD(
       TR(
        TH('Nieuw:'), 
        TH('Toevoegen:'), 
        TH('Nummer:') 
        )), 
       TBODY(TR(
        TD(SELECT('rij','remark', value='rij',_name='t')), 
        TD(SELECT('voor', 'na', value='na',_name='w')), 
        TD(SELECT([(key,'.',skey) for (key,skey) in sorted(data.iterkeys())],_name='p')), 
        TD(INPUT(_type="submit", _name="make", _value="Maak")) 
      )))) 

form_er = FORM(
      TABLE(
       THEAD(TR(
        TH('Line'), 
        TH('Name'), 
        TH('Qualifier'), 
        TH('Field'), 
        TH('Subfield'), 
        TH('Match'), 
        TH('Set'), 
        TH('Field'), 
        TH('Subfield'), 
        TH('Position'), 
        TH('Length'), 
        TH('Position'), 
        TH('Lenght'), 
        TH('Type'), 
        TH('Name') 
       )), 
       TBODY([TR(
        TD(key,'.',skey), 
        TD(INPUT(_name='N',_value=data[key,skey][0],_style='width:30px')), 
        TD(INPUT(_name='Q',_value=data[key,skey][1]), _colspan=13,_style='width:450px'), rowid=data[key,skey] 
       ) 
       if data[key,skey][0]=='#' else 
       TR(
        TD(key,'.',skey), 
        TD(INPUT(_name='N',_value=data[key,skey][0], _style='width:30px')), 
        TD(INPUT(_name='Q',_value=data[key,skey][1], _style='width:30px')), 
        TD(INPUT(_name='IF',_value=data[key,skey][2], _style='width:30px')), 
        TD(INPUT(_name='IS',_value=data[key,skey][3], _style='width:30px')), 
        TD(INPUT(_name='IM',_value=data[key,skey][4], _style='width:30px')), 
        TD(INPUT(_name='IT',_value=data[key,skey][5], _style='width:30px')), 
        TD(INPUT(_name='OF',_value=data[key,skey][6], _style='width:30px')), 
        TD(INPUT(_name='OS',_value=data[key,skey][7], _style='width:30px')), 
        TD(INPUT(_name='IP',_value=data[key,skey][8], _style='width:30px')), 
        TD(INPUT(_name='IL',_value=data[key,skey][9], _style='width:30px')), 
        TD(INPUT(_name='OP',_value=data[key,skey][10], _style='width:30px')), 
        TD(INPUT(_name='OL',_value=data[key,skey][11], _style='width:30px')), 
        TD(INPUT(_name='OT',_value=data[key,skey][12], _style='width:10px')), 
        TD(INPUT(_name='ON',_value=data[key,skey][13])), rowid=data[key,skey] 
       ) 
       if skey==1 else 
       TR(
        TD(key,'.',skey), 
        TD(_maxlength='3',_size='3'), 
        TD(_colspan=5), 
        TD(INPUT(_name='OF',_value=data[key,skey][0], _style='width:30px')), 
        TD(INPUT(_name='OS',_value=data[key,skey][1], _style='width:30px')), 
        TD(INPUT(_name='IP',_value=data[key,skey][2], _style='width:30px')), 
        TD(INPUT(_name='IL',_value=data[key,skey][3], _style='width:30px')), 
        TD(INPUT(_name='OP',_value=data[key,skey][4], _style='width:30px')), 
        TD(INPUT(_name='OL',_value=data[key,skey][5], _style='width:30px')), 
        TD(INPUT(_name='OT',_value=data[key,skey][6], _style='width:10px')), 
        TD(INPUT(_name='ON',_value=data[key,skey][7])), rowid=data[key,skey] 
       ) for (key,skey) in sorted(data.iterkeys())]),_id="example",_class="display"), 
      INPUT(_type="submit", _name="save", _value="Save Page") 
      ) 
return dict(data=data,form_ar=form_ar, form_er=form_er, f=f) 

該文件是這樣的:

BGM+351::1:2=1.8.0.doorlopend nummer CobanaFruchtring 
#remark test 
DTM+191:::1.3=316.8.D.aankomstdatum (verwacht) 
NAD+SU:::2=46.8.0.Lieferantennummer:4.1=54.9..Lieferantenname 
NAD+BY:::2=63.8.0.ontvangernummer:4.1=71.9..ontvangernaam 
TDT+20:::8.4=299.17..bootnaam 
CPS::2 
LIN::3 
PIA+5:::3.1=80.34..Hoofdsoort/Varieteit:4.1=216.17..EAN-code:5.1=182.17..Verpakking 
PIA+1:::2.1=114.17..Marke:3.1=29.17..Ursprungland ISO-code:4.1=250.8..Size:5.1=148.17..Qualitaetsbezeichnung 
MEA+AAA.2.1:::3.2=423.8.3.nettogewicht per collo 
MEA+AAB.2.1:::3.2=439.8.3.brutogewicht per collo 
MEA+AAJ.2.1:::3.2=258.4.0.vpp 
QTY+21:::1.2=455.8.0.verwachte colli 
FTX+PAL:::4.1=182.17..Palettenart 
RFF+ON:::1.2.1.7=233.6.0.Partie-Nummer:1.2.8.3=239.3..Partie-pos 
RRF+ZZZ:::1.2.1.8=471.8.2.SBX partijnummer:1.2.16.4=479.4..SBX varieteitscode:1.2.20.4=483.4..SBX merkcode:1.2.28.4=487.4..SBX categoriecode:1.2.32.4=490.1..SBX verpakkingscode 
LOC+18:::2.4=324.17..Ankunfthafen 
PCI+IEN:::2=262.11..Containernummer 

我希望能夠在窗體中添加行,而不在需要的位置上提交。我已經看過powertable,datatables和jQuery來完成這個,但我似乎無法找到合適的解決方案。

有人可以幫助我嗎?

回答

0

如果我理解正確,您需要動態地將行添加到表中的任何位置。

如果是這樣,您可以在before()或after()之後使用jQuery方法。

例如,要選擇行之前插入一行:

$('#table tbody tr').live('click',function(event) { 
    $(this).before("<tr><td>data1</td></tr>") 
}); 
+0

謝謝您的回答Smiter。我解決了它 – Kluther