首页 > 解决方案 > 如何根据 C# 中的行级复选框从 HTML 表中获取值?

问题描述

我有一个包含三个 HTML 表的 aspx 页面。HTML中的表格之一如下所示:

<table id='example' >
   <thead>
      <tr>
         <th><INPUT type="checkbox" onchange="checkAll(this)" name="chk[]"/></th>
         <th>SchoolID</th>
         ...
      </tr>
   </thead>
   <tr>
      <td>
         <input type='checkbox' name='name0' />
      </td>
      <td>200116</td>
   </tr>
   <tr>
      <td>
         <input type='checkbox' name='name1' />
      </td>
      <td>200116</td>
   </tr>
   ...
</table>

此表如下所示:

在此处输入图像描述

我需要的是获取SchoolID最终用户在 C# 中检查的行。最好的方法是什么?

我目前正在尝试使用 HTMLAgilityPack 将我的 HTML 表作为数据表,但我没有成功。它正在获得第一张桌子,我需要第三张桌子。然而,我不确定这是否是最好的方法。请指教。

var doc = new HtmlDocument();
//doc.Load(Request.Url.ToString()); //gives error.
doc.Load(filepath); //this works

//this is returning me the first table of my page, i need the third table.
var nodes = doc.DocumentNode.SelectNodes("//table/tr");

var table = new DataTable("exampleDataTable");

任何帮助将不胜感激!

编辑:原来我不能使用 HTMLAgilityPack,因为我实际上是在 C# 中创建表然后发送到前端。使用文件路径不起作用,因为默认情况下 .aspx 文件中没有表。

EDIT2:秒,我找到了web.load函数,也许我可以使用Request.Url。

标签: c#htmlasp.nethtml-agility-packasp.net-4.5

解决方案


您可以在提交按钮的click()侦听器中通过 jQuery 获取所选行的 SchoolID。

var tableControl = document.getElementById('mytable');
$('#myBtn').click(function() {

var arrayOfValues = []
    $('input:checkbox:checked', tableControl).each(function() {
            arrayOfValues.push($(this).closest('tr').find('td:last').text());
        }).get();
    alert(arrayOfValues);
});


$('#chkAll').change(function() {
  $('input:checkbox').not(this).prop('checked', this.checked);
});

工作演示:JSFiddle


推荐阅读