2015-09-21 21 views
0

我在開發至尊庫查找欄顯示不同的值取決於值從另一列在同一行內dxdatagrid(開發至尊)

使用dxdatagrid反正是有,我可以用鼠標右鍵後過濾查找列的數據源數據網格

內同一行中的另一個查找列的變化值,我創造了這個演示講解:

var listAccount = [ 
    { ID: 1, WebsiteID: 1, Website: 'A', AccountID: '1', Username: 'A1' }, 
    { ID: 2, WebsiteID: 1, Website: 'A', AccountID: '2', Username: 'A2' }, 
    { ID: 3, WebsiteID: 2, Website: 'B', AccountID: '4', Username: 'B1' }, 
    { ID: 4, WebsiteID: 3, Website: 'C', AccountID: '7', Username: 'C1' }, 
    { ID: 5, WebsiteID: 4, Website: 'D', AccountID: '8', Username: 'D1' }, 
    { ID: 6, WebsiteID: 5, Website: 'E', AccountID: '9', Username: 'E1' } 
]; 

var websites = [ 
    { WebsiteID: 1, Website: 'Website A' }, 
    { WebsiteID: 2, Website: 'Website B' }, 
    { WebsiteID: 3, Website: 'Website C' }, 
    { WebsiteID: 4, Website: 'Website D' }, 
    { WebsiteID: 5, Website: 'Website E' } 
]; 

var account = [ 
    { AccountID: 1, Username: 'A1', WebsiteID: 1 }, 
    { AccountID: 2, Username: 'A2', WebsiteID: 1 }, 
    { AccountID: 3, Username: 'A3', WebsiteID: 1 }, 
    { AccountID: 4, Username: 'B1', WebsiteID: 2 }, 
    { AccountID: 5, Username: 'B2', WebsiteID: 2 }, 
    { AccountID: 6, Username: 'B3', WebsiteID: 2 }, 
    { AccountID: 7, Username: 'C1', WebsiteID: 3 }, 
    { AccountID: 8, Username: 'D1', WebsiteID: 4 }, 
    { AccountID: 9, Username: 'E1', WebsiteID: 5 }, 
    { AccountID: 10, Username: 'E2', WebsiteID: 5 } 
]; 

var grid = $('#myGrid').dxDataGrid({ 
    dataSource: listAccount, 
    columns: [ 
{ 
    dataField: 'ID' 
}, 
{ 
    dataField: 'WebsiteID', 
    caption: 'Website', 
    lookup: { 
     dataSource: websites, 
     displayExpr: 'Website', 
     valueExpr: 'WebsiteID', 
    } 
}, 
{ 
    dataField: 'AccountID', 
    caption: 'Account', 
    lookup: { 
     dataSource: account, 
     displayExpr: 'Username', 
     valueExpr: 'AccountID', 
    } 
}], 
    editing: { 
     editMode: 'batch', 
     editEnabled: true, 
     insertEnabled: true 
    } 
}).dxDataGrid('instance'); 

在編輯模式下,有什麼辦法當我選擇其他網站和賬戶只顯示賬號的選擇d網站? 例如:當我選擇的網站A,只佔A1 & A2顯示在查找列

謝謝

+0

要按值過濾dxDataGrid數據,可以使用'filterRow'選項。更多信息[here](http://js.devexpress.com/Documentation/ApiReference/UI_Widgets/dxDataGrid/Configuration/filterRow/?version=15_1)。 – Sergey

+0

@Sergey謝謝你的回覆,但我不認爲它在這種情況下工作,[link] filterRow [鏈接]似乎只適用於dxdatagrid數據源,在這種情況下,我需要數據源在查找更改立即取決於我更改的值在同一行的另一列中 –

回答

0

在你的情況我建議你使用cellTemplateeditCellTemplate選項。這些選項允許您手動呈現「網站」列的選擇框。然後,你就可以使用onValueChanged選項來處理WebsiteId價值變動:

cellTemplate: function($cell, cellData){ 
    $cell.text('Website ' + cellData.data.Website); 
}, 
editCellTemplate: function($cell, cellData){ 
    var $selectBox = $("<div>").dxSelectBox({ 
     dataSource: websites, 
     displayExpr: 'Website', 
     valueExpr: 'WebsiteID', 
     value: cellData.data.WebsiteID, 
     onValueChanged: function(){ 
      // filter your data here... 
     } 
    }); 

    $cell.append($selectBox); 
} 

樣品是在這裏 - http://jsfiddle.net/kb1681g0/2/

要過濾數據,您可以使用DataSource.filter()方法。

希望這些信息對您有所幫助。

+0

對不起,最近回覆。這裏是我的onValueChanged處理程序: onValueChanged:function(e){ \t account.filter(「WebsiteID」,e.value); cellData.setValue(e.value) } 但帳戶列中似乎沒有任何事情發生 –

+0

嘗試使用'DevExpress.data.query()。filter()。toArray()'過濾數據。看到這個http://jsfiddle.net/96orLbqs/ – Sergey

相關問題