如何解析DOM并确定在ASP.NET ListView中选择了哪一行



如何解析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组成,其中只有大约一半是您关心的选项元素。

相关内容

  • 没有找到相关文章