如何根据 C# 中的行级复选框从 HTML table 获取值?
How to get a value from HTML table based on row-level checkbox in C#?
我有一个包含三个 HTML table 的 aspx 页面。 HTML中的其中一个table如下所示:
<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>
这个 table 看起来像:
我需要的是获取最终用户在 C# 中检查的行的 SchoolID
。最好的方法是什么?
我目前正在尝试使用 HTMLAgilityPack 将我的 HTML table 作为数据 table,但我没有成功。正在获取第一个table,我需要第三个。然而,我不确定这是否是最好的方法。请指教
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# 中创建 table 然后发送到前端。使用文件路径不起作用,因为默认情况下 .aspx 文件中没有 table。
EDIT2:Sec,我找到了 web.load 函数,也许我可以使用 Request.Url。
您可以通过提交按钮的 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
我有一个包含三个 HTML table 的 aspx 页面。 HTML中的其中一个table如下所示:
<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>
这个 table 看起来像:
我需要的是获取最终用户在 C# 中检查的行的 SchoolID
。最好的方法是什么?
我目前正在尝试使用 HTMLAgilityPack 将我的 HTML table 作为数据 table,但我没有成功。正在获取第一个table,我需要第三个。然而,我不确定这是否是最好的方法。请指教
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# 中创建 table 然后发送到前端。使用文件路径不起作用,因为默认情况下 .aspx 文件中没有 table。
EDIT2:Sec,我找到了 web.load 函数,也许我可以使用 Request.Url。
您可以通过提交按钮的 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