在ASP.NET中表格的顯式方法多種多樣,有html標簽<table></table>,有asp服務器控件GridView,還有Repeater控件等都可以幫我們在頁面顯式表格信息。GridView控件比較強大,它有自帶的屬性和方法可以用來對顯式的表格數據進行各種操作。但是如果使用傳統html標簽<table></table>或者是Repeater控件來顯式數據,又該如何取到選中行的數據呢。這里我們來介紹一下利用JS來取頁面表格數據的方法。
如圖所示,我們需要對表格中的數據實現編輯,刪除等操作。
下面以Repeater控件為例:
(1)頁面表格:定義好表頭,並設置好數據綁定(有些操作需要取到該條數據的主鍵,考慮到實際情況,我們應該將主鍵隱藏,對相應的列使用hidden屬性即可)。在后台只需要將Repeater綁定到相應的數據源。這里我們用class來標記button,這樣在JS中就可以取出所有的class相同的button作為一組。從而在JS中監聽並選定相應行。
1 <label>出貨單單頭:</label> 2 <asp:Repeater ID="Top_Reapter" runat="server"> 3 <HeaderTemplate> 4 <table id="Top_Table" border="1"> 5 <tr> 6 <th hidden="hidden">ID</th> 7 <th>客戶ID</th> 8 <th>出貨人員</th> 9 <th>創建時間</th> 10 <th>更新時間</th> 11 <th>編輯</th> 12 <th>刪除</th> 13 <th>新增子信息</th> 14 </tr> 15 </HeaderTemplate> 16 <ItemTemplate> 17 <tr> 18 <td hidden="hidden"><%#Eval("ship_key")%></td> 19 <td><%#Eval("customer_id")%></td> 20 <td><%#Eval("ship_man")%></td> 21 <td><%#Eval("create_time")%></td> 22 <td><%#Eval("update_time")%></td> 23 <td> 24 <button type="button" class="Top_Edit">編輯</button> 25 </td> 26 <td> 27 <button type="button" class="Top_Delete">刪除</button> 28 </td> 29 <td> 30 <button type="button" class="Insert_Line">新增子信息</button> 31 </td> 32 </tr> 33 </ItemTemplate> 34 <FooterTemplate></table></FooterTemplate> 35 </asp:Repeater>
(2)JS部分:通過class來獲取相應的一組button並設置監聽。然后通過標簽名<tr>獲取選中行,通過標簽名<td>獲取選中行所有列數據的一個集合,通過DOM操作將相應的數據顯示在前台指定的位置。
1 /*編輯單頭信息*/ 2 var Top_Edit = document.getElementsByClassName("Top_Edit"); 3 4 for (var i = 0; i < Top_Edit.length; i++) { 5 6 Top_Edit[i].index = i; 7 8 Top_Edit[i].onclick = function () { 9 10 var table = document.getElementById("Top_Table"); 11 12 /*獲取選中的行 */ 13 var child = table.getElementsByTagName("tr")[this.index + 1]; 14 15 /*獲取選擇行的所有列*/ 16 var SZ_col = child.getElementsByTagName("td"); 17 18 document.getElementById("Edit_id").value = SZ_col[0].innerHTML; 19 document.getElementById("edit_customer").value = SZ_col[1].innerHTML; 20 document.getElementById("edit_man").value = SZ_col[2].innerHTML; 21 document.getElementById("Top_Creat_Time").value = SZ_col[3].innerHTML; 22 document.getElementById("Top_Update_Time").value = SZ_col[4].innerHTML; 23 24 } 25 }
JS獲取表格數據就這么簡單幾步。獲取表格數據還有jQuery等其他方法,可以多去嘗試,然后對比總結,這樣對於程序員本身也是一個提高。