如何解析DOM并确定在ASP.NET ListView
中选择了哪一行?我可以通过Silverlight中的HtmlElement
与DOM交互,但我无法找到指示行已被选中的属性。
作为参考,此托管方法适用于ASP.NET ListBox
var elm = HtmlPage.Document.GetElementById(ListBoxId);
foreach (var childElm in elm.Children)
{
if (!((bool)childElm.GetProperty("Selected")))
{
continue;
}
}
如果您的列表视图为所选行有一个特定的css类,您可以尝试对其进行过滤
mathieu提供的建议应该很好。既然您提到了row,我建议您在ListView中的tr元素中添加一个id,然后您可以使用jQuery找到它。
所以,
<tr id='selectedRow'>
......
</tr>
$(document).ready(function() {
$("#selectedRow").click(function() {
alert('This is the selected row');
});
});
我没有我的开发环境来测试这一点,但你能在ListBoxID元素上调用GetProperty('selectedIndex')吗?然后,您可以计算出哪个子项被选中,并使用elm返回该子项。儿童
编辑:今天早上启动了我的开发环境并进行了一些测试。这是一个对我有用的代码片段:
HtmlElement elem = HtmlPage.Document.GetElementById("testSelect");
int index = Convert.ToInt32(elem.GetProperty("selectedIndex"));
var options = (from c in elem.Children
let he = c as HtmlElement
where he.TagName == "option"
select he).ToList();
output.Text = (string)options[index].GetProperty("innerText");
当然,您必须将"textSelect"更改为html选择元素的名称。需要linq查询,因为Children属性由ScriptableObjects组成,其中只有大约一半是您关心的选项元素。