2013-10-22 27 views
0

我有以下代碼(請參見下文)。現在的問題是如何隱藏列quantity_value1格式化文本框每當列條件1的值是0數據表中的雅虎小部件的條件可見性

var response = { 
    "id": 1, 
    "items": [ 
     {"condition1": 1, "quantity_value1":"value1"}, 
     {"condition1": 1, "quantity_value1":"value2"}, 
     {"condition1": 0, "quantity_value1":"value3"}, 
     {"condition1": 1, "quantity_value1":"value4"}, 
     {"condition1": 0, "quantity_value1":"value5"}    
    ] 
}; 

var bpColumns = [ 
    {label:'header1', children:[ 
    { 
     key:"condition1" 
    }, 
    { 
     key:"quantity_value1", 
     formatter:YAHOO.widget.DataTable.formatTextbox 
    }]} 
]; 
YAHOO.example.Data = response; 
this.bpDataSource = new YAHOO.util.DataSource(YAHOO.example.Data); 
this.bpDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON; 
this.bpDataSource.responseSchema = { 
    resultsList: "items", 
    fields: ["condition1","quantity_value1"] 
}; 
this.standardSelectDataTable = new YAHOO.widget.ScrollingDataTable("mydiv", 
    bpColumns, this.bpDataSource, {height:"15em"}); 
+0

像這樣的事情http://jsfiddle.net/sjxSj/2/但YUI 2.9 –

回答

0

這工作:

  var response = { 
       "id": 1, 
       "items": [ 
        {"condition1": 1, "quantity_value1":"value1"}, 
        {"condition1": 1, "quantity_value1":"value2"}, 
        {"condition1": 0, "quantity_value1":"value3"}, 
        {"condition1": 1, "quantity_value1":"value4"}, 
        {"condition1": 0, "quantity_value1":"value5"}    
       ] 
      }; 
      var bpColumns = [ 
       {label:'header1', children:[ 
         { 
          key:"condition1" 
         }, 
         { 
          key:"quantity_value1", 
          formatter:"formatTextbox" 
         }]} 
      ]; 
      var vrecord = null; 
      YAHOO.example.Data = response; 
      this.formatTextbox = function(el, oRecord, oColumn, oData, oDataTable) { 
       if (oRecord.getData("condition1") === 1){ 
        var value = (YAHOO.lang.isValue(oData)) ? YAHOO.lang.escapeHTML(oData.toString()) : ""; 
        var input = document.createElement("input"); 
        input.type = "text"; 
        input.value = value; 
        input.onchange = function() 
        { 
         vrecord.setData("quantity_value1",this.value); 
         console.log(vrecord); 
        }; 
        el.appendChild(input); 
       } 
      }; 
      // Add the custom formatter to the shortcuts 
      YAHOO.widget.DataTable.Formatter.formatTextbox = this.formatTextbox; 
      this.bpDataSource = new YAHOO.util.DataSource(YAHOO.example.Data); 
      this.bpDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON; 
      this.bpDataSource.responseSchema = { 
       resultsList: "items", 
       fields: ["condition1","quantity_value1"] 
      }; 
      this.standardSelectDataTable = new YAHOO.widget.ScrollingDataTable("mydiv", 
      bpColumns, this.bpDataSource, {height:"15em"}); 
      this.standardSelectDataTable.subscribe("rowClickEvent", this.standardSelectDataTable.onEventSelectRow); 
      this.standardSelectDataTable.subscribe("rowClickEvent", function(event, target) { 
       var selectedRows = this.getSelectedRows(); 
       vrecord = this.getRecord(selectedRows[0]); 
      }); 
1

您必須編寫自己的格式按照用戶手冊中顯示here。有一個例子here。無法配置內置版本,但可以將其用作版本的基礎,在source中搜索formatTextbox。