0

我正在构建一个 edifact 翻译器/编辑器。为了显示现有的翻译,我有以下控制器:

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 来实现这一点,但我似乎找不到合适的解决方案。

有人能帮我吗?

4

1 回答 1

0

如果我理解正确,您需要在表格的任何位置动态添加行。

如果是这样,您可以使用 jQuery 方法 before() 或 after()。

例如,要在选定行之前插入行:

$('#table tbody tr').live('click',function(event) {
    $(this).before("<tr><td>data1</td></tr>")
}); 
于 2012-10-19T20:31:42.333 回答