2012-01-13 9 views
1

基本的な質問をしたら、私を許してください。 javacriptの新機能です。動的チェックボックスが機能しないdojoダイアログボックス

私はダイアログボックスを作成しようとしていますが、ダイアログボックスに表示するチェックボックスのリストを動的に作成しようとしています。 ダイアログボックスには、チェックボックスの数が定義された幅から増加する場合にスクロールするスクロールバーが必要です。 私はダイアログボックスを作成することはできますが(非常にエレガントな解決策ではありません)、問題は1つです...

Windowsエクスプローラ9に表示されるダイアログボックスには、スクロールバーを移動して移動します。私は(コメントを参照してください)。このコードの一部では、いくつかの構文エラーを発見した

function filterLocationDisplay() 
{ 
    destroyElement(FILTER_TABLE_ID); 

    var clientPrefs = [ 
    {"MSISDN":"0", "display":true}, 
    {"MSISDN":"1", "display":false}, 
    {"MSISDN":"2", "display":true}, 
    {"MSISDN":"3", "display":false},   
    {"MSISDN":"4", "display":true}, 
    {"MSISDN":"5", "display":false}, 
    {"MSISDN":"6", "display":true}, 
    {"MSISDN":"7", "display":false},   
    {"MSISDN":"8", "display":false}, 
    {"MSISDN":"9", "display":false}, 
    {"MSISDN":"10", "display":true}, 
    {"MSISDN":"20", "display":false}, 
    {"MSISDN":"30", "display":false},   
    {"MSISDN":"40", "display":false}, 
    {"MSISDN":"50", "display":true}, 
    {"MSISDN":"60", "display":false}, 
    {"MSISDN":"70", "display":true}, 
    {"MSISDN":"000", "display":true}, 
    {"MSISDN":"100", "display":false}, 
    {"MSISDN":"200", "display":true}, 
    {"MSISDN":"300", "display":false},   
    {"MSISDN":"400", "display":true}, 
    {"MSISDN":"500", "display":false}, 
    {"MSISDN":"600", "display":true}, 
    {"MSISDN":"700", "display":false},   
    {"MSISDN":"800", "display":false}, 
    {"MSISDN":"900", "display":false}, 
    {"MSISDN":"1000", "display":true}, 
    {"MSISDN":"2000", "display":false}, 
    {"MSISDN":"3000", "display":false},   
    {"MSISDN":"4000", "display":false}, 
    {"MSISDN":"5000", "display":true}, 
    {"MSISDN":"6000", "display":false}, 
    {"MSISDN":"7000", "display":true},     
    {"MSISDN":"8000", "display":false}   
    ]; 

    var cbFilterDivRef; 
    var cbDialogRef; 
    if(undefined == dojo.byId("filterDivID") || null == dojo.byId("filterDivID")) 
    { 
     var filterDivSubmitButton = new dijit.form.Button(
        { 
         type:"submit", 
         label:"Submit", 
         name:"filterPrefsSubmitButton", 
         id:"filterPrefsSubmitButtonId", 
         dojoType: "dijit.form.Button", 
         onClick:function() { onFilterSubmit("submit"); 
        }}); 

     var filterDivSelectAllButtonRef = new dijit.form.Button(
        { 
         type:"button", 
         label:"Select all", 
         name:"filterPrefsSelectAllButton", 
         id:"filterPrefsSelectAllButtonId", 
         dojoType: "dijit.form.Button", 
         onClick:function() { onFilterSubmit("all"); 
        }}); 

     var filterDivSelectNoneButtonRef = new dijit.form.Button(
        { 
         type:"button", 
         label:"Unselect all", 
         name:"filterPrefsSelectNoneButton", 
         id:"filterPrefsSelectNoneButtonId", 
         dojoType: "dijit.form.Button", 
         onClick:function() { onFilterSubmit("none"); 
        }}); 

     cbFilterDivRef = dojo.create("div", 
         { 
          id: "filterDivID" , 
          style: {"overflow": "scroll", 
            "overflow": "scroll", 
            "width": "350px", 
            "height": "400px"}, 
         }, dojo.byId("hiddenDiv"), "first"); 

     filterDivSelectAllButtonRef.placeAt(cbFilterDivRef, "last"); 
     filterDivSelectNoneButtonRef.placeAt(cbFilterDivRef, "last");    
     filterDivSubmitButton.placeAt(cbFilterDivRef, "last"); 
    } 
    else { 
     cbFilterDivRef = dojo.byId("filterDivID"); 
    } 

    if(undefined == dojo.byId("FilterDlgID") || null == dojo.byId("FilterDlgID")) 
    { 

     cbDialogRef = new dijit.Dialog({ 
        title: "Please select the assets to be displayed", 
        id:"FilterDlgID", 
        style:{"border": "3px groove", "overflow": "none"}, 
        content:cbFilterDivRef, 
        autofocus: !dojo.isIE, // NOTE: turning focus ON in IE causes errors when reopening the dialog 
        refocus: !dojo.isIE 
      }); 
    }  
    else { 
     cbDialogRef = dijit.byId("FilterDlgID"); 
    } 

    var filterTable = dojo.create("table", 
           { 
            id:FILTER_TABLE_ID, 
            name:FILTER_TABLE_ID, 
            style:{"position":"relative"} 
           }, 
           cbFilterDivRef, "first"); 
    for (var msisdnNo = 0; msisdnNo < clientPrefs.length ; ++msisdnNo) 
    { 
     var row = filterTable.insertRow(filterTable.rows.length);// create a table to contain the checkbox 
     // and Asset ID. 
     var assetId = clientPrefs[msisdnNo].MSISDN; 
     var checkBoxCell = row.insertCell(0); checkBoxCell.setAttribute("id", assetId+".cell"); 
     var assetIdCell = row.insertCell(1); assetIdCell.innerHTML = assetId; 

     var checkBox = dijit.byId(assetId+ID_CB_SUFFIX) ; 
     //destroy the checkBox widget .. if its created.. 
     if (null != checkBox || undefined != checkBox) 
     { 
      checkBox.destroy(); 
     } 
     checkBox = new dijit.form.CheckBox({ 
       id:  assetId+ID_CB_SUFFIX, 
       name: assetId, 
       value: "true" 
       });    
     checkBox.setChecked(clientPrefs[msisdnNo].display); 
     checkBox.placeAt(assetId+".cell", "first"); 
    } 
    cbDialogRef.show(); 

} 

/** 
* 
*/ 
function onFilterSubmit(option) 
{ 
    var filterTable = dojo.byId(FILTER_TABLE_ID); //document.getElementById(FILTER_TABLE_ID); 
    if(null == filterTable || undefined == filterTable) 
    { 
     return false; 
    } 
    // get the list of checkboxes xhc 
    var checkBoxesList = null; 
    if("submit" != option) { 
    checkBoxesList = dojo.query('input[type="checkbox"]', FILTER_TABLE_ID); 
    } 
    else { 
     checkBoxesList = dojo.query('input:checked', FILTER_TABLE_ID); 
    } 
    alert(checkBoxesList.length); 
    var returnObject = new Array(); 
    var assetCount = 0; 
    for(var assetCount =0 ; assetCount < checkBoxesList.length; assetCount++) 
    { 
     var assetDisplayPrefCb = dijit.getEnclosingWidget(checkBoxesList[assetCount]); 
     var assetId = assetDisplayPrefCb.get("name"); 
     switch (option) { 
      case "all": 
      { 
       assetDisplayPrefCb.setChecked(true); 
       break; 
      } 
      case "none": 
      { 
       assetDisplayPrefCb.setChecked(false); 
       break;      
      } 
      case "submit": 
      default: 
      { 
       returnObject[assetCount] = new Object(); 
       returnObject[assetCount].assetId = assetId; 
       returnObject[assetCount].display = assetDisplayPrefCb.getValue("checked");//checked; 
      } 
     } 
    } 
alert("returnObject.length == " + returnObject.length); 
return returnObject; 
}// onSubmit(option) 
+0

あなたはie9設定をチェックしましたか?これはブラウザの問題のように思えます。 – Ted

+0

変更する特定の設定がわかりません。ソフトウェアレンダリングを使用する/使用しないように、アクセラレーションされたグラフィックオプションを変更しました。他の設定を考えることができませんでした.. –

答えて

0

は、任意の助けが...

コードを高く評価します。.. Firefoxのに良い作品。私はそれがスクロールする問題を解決するだろうと言っているのではありませんが、それらは解決する必要があります...

cbFilterDivRef = dojo.create("div",{ 
         id: "filterDivID", 
         style: {"overflow": "scroll", 
           "overflow": "scroll", //remove duplicate 
           "width": "350px",  
           "height": "400px"  
         }, //remove comma after bracket 
        }, 
       dojo.byId("hiddenDiv"), "first"); 
+0

それらを指摘していただきありがとうございます。コードが構文上のエラーのいずれかを持っていればIEは動作しません:()。問題を解決していますか? –

関連する問題