2010-08-02 112 views
0

我遇到了另一個我正在開發的dojo啓用窗體的問題。用戶可以通過使用對話框輸入數據在頁面上輸入詳細信息,對話框依次更新數據庫,然後顯示輸入到表單上的用戶數據。以編程方式動態添加按鈕上的dijit ...如何?

添加的每個元素包含2個驗證文本框1個FilteringSelect。當它被添加到頁面中時,它們被添加爲簡單的文本框。

我試過只是添加爲標準字符串,但這意味着dojo.parse()不會在代碼上運行。我也嘗試以編程方式添加元素,但只是將元素對象顯示爲字符串到頁面。到目前爲止,我有:

var xhrArgs = { 
    url: url, 
    handleAs: "text", 
    preventCache: true, 
    load: function(data){ 

     var idResult = parseInt(data); 

     if(idResult > 0){ 


      var divStr = '<div id="employ_' + idResult + '" style="float:left;width:100%;">' + 
      '<table width="300">' + 
       '<tr>' + 
        '<td height="29"><Strong>' + 
          '<input type="text" dojoType="dijit.form.ValidationTextBox ' + 
           'change="markEmploymentForUpdate(); ' + 
           'id="cmpy_'+ idResult +'" '+ 
           'required="true" ' + 
           'promptMessage="Please enter a valid company name" ' + 
           'invalidMessage="please enter a valid company name" ' + 
           'trim="true"' + 
           'value="'+ companyname +'"/>' + 
        '</td>' + 
        '<td height="29"><input dojoType="dijit.form.FilteringSelect" store="rolestore" searchAttr="name" name="role" onchange="markEmploymentForUpdate();" id="roleInput_'+ idResult +'" value="'+ jobrole +'" ></td>' + 
        '<td height="29">' + 
         '<input type="text" dojoType="dijit.form.ValidationTextBox" onchange="markEmploymentForUpdate();"' + 
          'id="jtitle_'+ idResult + '"' + 
          'required="true"' + 
          'promptMessage="Please enter your job title"' + 
          'invalidMessage="Please enter your job title"' + 
          'value="'+ jobtitle + '"/>' + 
        '</td>' + 
        '<td height="29"><img src="/images/site/msg/small/msg-remove-small.png" border="0" onmouseover="this.style.cursor=\'pointer\';" onclick="removeEmployer(\'employ_'+ idResult +'\', '+ idResult +')" /></td>' + 
       '</tr>' + 
      '</table>' + 
     '</div>'; 

      dijit.byId('companydetails').hide(); 
      dijit.byId('employername').setValue(''); 
      dijit.byId('jobtitle').setValue(''); 
      dijit.byId('jobrole').setValue(''); 

      dojo.byId('data-table').innerHTML += divStr; 

      dojo.byId('companydetails').hide(); 


     }else{ 

      dojo.byId('add-error').innerHTML = '<div class="error">Unable to process your request. Please try again.</div>'; 

     } 



    }  
}; 

var deferred = dojo.xhrGet(xhrArgs); 

這是顯示文本框爲dojo.parse未在此運行。如果我將ValidationTextBox替換爲:

var textbox = new dijit.form.ValidationTextBox({ 
    id:"cmpy_" + idResult, 
    required:true, 
    trim:true, 
    "change":"markEmploymentForUpdate();", 
    promptMessage:"Please enter a valid company name", 
    value:companyname 
}); 

我只是將對象打印到頁面上。

任何想法如何將它添加到我的頁面並維護dojo組件,而不是默認爲文本框?

非常感謝。

回答

0

dojo.parser.parse(dojo.byId('data-table'));在你設置它的innerHTML之後

+0

是否可以對整個頁面進行操作?如dojo.parser.parse(this)? – 2010-08-04 16:22:17

+0

@GrantCollins:在加載dojo之前,在dojoConfig中設置'parseonload'。 – DanMan 2013-05-29 12:52:38

相關問題