2012-09-24 133 views
4

我有兩個數據表,一個列出摺疊,另一個列表文件在其父文件夾中。這裏是我的腳本如何查找文件夾表:如何在兩個jQuery數據表之間傳遞參數

var oTable = $('#folderTable').dataTable({ 
      "bServerSide": true, 
      "sAjaxSource": "AJAXViewFolders", 
      "bProcessing": true, 
      "bFilter": false, 
      "aoColumns": [ 
        { "sName": "folder_id", 
         "bSearchable": false, 
         "bSortable": false, 
         "fnRender": function (oObj) { 
          return '<a href=\"ViewFiles?parentid=' + oObj.aData[0] + '\">View</a>'; 
         } 
        }, 
        { "sName": "folder_name" }, 
        { "sName": "create_date" } 
       ] 
     }); 
    }); 

現在,當用戶點擊我需要能夠到的parentId傳遞到文件數據表的鏈接。到目前爲止我沒有運氣。下面是JSON結果的樣子在我的控制器,用於數據表文件:

public JsonResult AJAXViewFiles(DataTableParamModel dtParams, int parentid) 
    { 
     var repo = new TrusteeDocumentRepository(); 
     var allDocuments = repo.FindAllFiles().Where(c=>c.folder_id == parentid); 
     IEnumerable<Files> filteredFiles; 
     filteredFiles = allDocuments; 


     var displayedFiles = filteredFiles.Skip(dtParams.iDisplayStart).Take(dtParams.iDisplayLength); 
     var result = from c in displayedFiles select new[] { Convert.ToString(c.folder_id),c.file_name, c.upload_date.ToString() }; 

     return Json(new 
     { 
      sEcho = dtParams.sEcho, 
      iTotalRecords = allDocuments.Count(), 
      iTotalDisplayRecords = filteredFiles.Count(), 
      aaData = result 
     }, 
        JsonRequestBehavior.AllowGet); 
    } 

我將如何去獲得的文件夾表的鏈接順利通過的parentId到jsonresult爲文件的數據表?

回答

1

我假設的DataTable是在同一頁上,所以我想切換到一個按鈕...

"fnRender": function (oObj) { 
    return '<button type="button" class="folder-view" data-id="' + oObj.aData[0] + '">View</button>'; 
} 

添加在線點擊處理程序,以便您可以設置當前的parentId並刷新文件數據表。處理程序可能是這樣的......

$('.folder-view').on('click', function() { 
    var $filesTable = $('#filesTable'); 
    $filesTable.attr('data-parentid', $(this).attr('data-id')); 
    //refresh the files table 
    $filesTable.dataTable().fnDraw(false); 
}); 

最後,文件的dataTable將需要重寫fnServerData功能合併多餘的parentid數據...

"fnServerData": function (sSource, aoData, fnCallback) { 

    var extraData = [ { parentid: $('#filesTable').attr('data-parentid') } ]; 

    $.ajax({ 
     "dataType": "json", 
     "type": "POST", 
     "url": sSource, 
     "data": $.merge(extraData, aoData), 
     "success": fnCallback 
    }); 
} 
+0

對不起,我應該已經指定。這些數據表在兩個不同的頁面上,但我認爲這個解決方案可以很好地通過簡單地切換AJAX url,正確嗎? –

+0

正確,甚至更容易...你可以把parentid放到ajax url中。 – dotjoe

+0

真棒的幌子,謝謝你。 –

相關問題