2012-07-08 83 views
1

我在呼叫中心工作,有一個生成所有在該公司的其他呼叫中心目前統計的HTML表格的aspx頁面。如何從aspx文件中提取表格數據?

我已經把上一個JSFiddle here產生什麼樣的例子。我怕我只是一個熱心的初學者,所以如果道歉我不問這個正確等

我找只提取我需要包括所有行數據和列標記:

  --- C6 C7 C13 C14 

因此,所有我需要看到的是上述列。

這必須是客戶端,所以我假設JS,因爲我們不能訪問或服務器上的編輯,所以我們不能有我們例如自己的aspx文件。

我很高興地使用jQuery,我明白了一個可以提取使用jQuery數據,但我似乎無法讓我的頭周圍:(

如果有人能好心放在一起的jsfiddle使用http://fiddle.jshell.net/UqZjt/show/作爲源文件,那將是非常提前感謝。

感謝。

+0

它如果你可以更好地指定「提取」的含義,那就很好。你想隱藏除這些之外的所有其他列嗎?或者根據用戶選擇哪一行來顯示這些列的數據?如果您沒有指定您的預期結果,很難回答。更重要的是,你是否願意爲此使用jQuery? – 2012-07-08 09:23:45

+0

@FabrícioMatté感謝您的迴應。是的,我想隱藏除列出的列以外的所有列。我很高興能夠使用jQuery,我只是沒有經驗可以自己把它放在一起 - 但我確信我以前見過這樣的例子,我只是不太明白如何實現它們。 – redditor 2012-07-08 10:32:04

+0

您也可以更新問題以包含詳細描述 - 您知道編輯問題會自動將問題轉移到最新問題的頂部。我可能有點太睏倦從頭atm編寫解決方案。 – 2012-07-08 10:36:07

回答

3

當你確定使用jQuery,包括在您的頁面中添加此行的jQuery庫將此行添加到您的頁面<head>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 

這裏的隱藏基於頭的硬編碼陣列上的不需要的列代碼:

$(document).ready(function() { 

    //define which column headers to keep 
    var headersToKeep = ['---', 'C6', 'C7', 'C13', 'C14'], 
     colsToKeep = [], 
     table = $('#gvRealtime'), 
     ths = table.find('th'); 

    //iterates over headersToKeep retrieving their indexes 
    $.each(headersToKeep, function(i, v) { 
     //finds each header and adds its index to the colsToKeep 
     colsToKeep.push(ths.filter(function() { 
      return $(this).text() == v; 
     }).index()); 
    }); 

    //makes a new jQuery object containing only the headers/cells not present in the colsToKeep 
    $('th, td', '#gvRealtime, #gvTotal').filter(function() { 
     return $.inArray($(this).index(), colsToKeep) == -1; 
    }).hide(); //and hides them 
}); 

即使你沒有與JS/jQuery的很多經驗,代碼的情況下,評價您有任何疑問,每個部分的作用。在jQuery庫之後的<head>中將其添加到<script></script>標記中。

這裏的JSFiddle

當然,以後您可以基於複選框或其他切換方法獲取/製作數組。由於您沒有要求提供任何特定接口,因此我將陣列硬編碼。

編輯:很顯然,假設你已經知道的列數,而不是讓他們通過自己的頭文本,你可以用這個更簡單的片斷:

$(document).ready(function() { 
    var colsToKeep = [0, 6, 7, 13, 14]; 
    $('th, td', '#gvRealtime, #gvTotal').filter(function() { 
     return $.inArray($(this).index(), colsToKeep) == -1; 
    }).hide(); 
}); 

JSFiddle

0

一個簡單的谷歌搜索給我帶來了this answer,這給我帶來了this fiddle

我試圖adapt the code to your requirements

希望你可以使用該功能(這是在最底層),以一定的效果。

+2

@MaxArt用戶提到他們不能完全理解jquery,這就是爲什麼它不是必需的。我意識到這一點,這就是爲什麼我沒有在jQuery中做最後一個功能。我所做的只是在一個簡單易懂的js函數中使用最終的結果數據。 – Daedalus 2012-07-08 09:31:57

0

可以輕鬆地訪問表中的元素以這種方式:

var table = document.getElementsByTagName("table")[0], 
    tabArray = []; 
for (var i = 0; i < table.tBodies[0].rows.length; i++) { 
    var rowArray = []; 
    for (var j = 0; j < table.tBodies[0].rows[i].cells.length; j++) 
     rowArray.push(table.tBodies[0].rows[i].cells[j].innerHTML); 
    tabArray.push(rowArray); 
} 

現在,tabArray是含有表格的單元格的內容的二維陣列。

+0

感謝您的迴應,我想我理解上面的代碼如何工作......它通過數據循環來構建tabArray?然而,作爲一個簡單的初學者 - 我不太清楚我可以如何使用它來僅顯示我在問題中列出的列。你會如此善良,以模仿使用'http://fiddle.jshell.net/UqZjt/show/'作爲soucel的JSFiddle – redditor 2012-07-08 10:40:28

0

您可以通過jQuery的做到這一點

$(document).ready(function() { 
$('tr td').each(function() { 
    $('#Result').append($(this).text()); 
}); 
}); 

在我的例子中,我添加了ID結果一個div的單元格數據

<div id="Result" ></div>