0

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;
    }
}
4

3 に答える 3

1

提供された提案mathieuは正常に機能するはずです。行について言及したので、ListViewのtr要素にIDを追加すると、jQueryで見つけることができます。

それで、

<tr id='selectedRow'>
......
</tr>

$(document).ready(function() {
    $("#selectedRow").click(function() {
        alert('This is the selected row');
    });

});
于 2008-11-02T01:54:29.277 に答える
1

リストビューに選択した行の特定の css クラスがある場合は、それをフィルタリングしてみることができます

于 2008-10-09T10:41:40.120 に答える
0

これをテストするための開発環境がありませんが、ListBoxID要素でGetProperty('selectedIndex')を呼び出すことができますか?次に、そこからどの子が選択されているかを判断し、elm.Childrenを使用してその子を返します。

編集:今朝、開発環境を立ち上げ、いくつかのテストを行いました。これが私のために働いたコードスニペットです:

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」をhtmlselect要素の名前に変更する必要があります。ChildrenプロパティはScriptableObjectsで構成されており、それらの約半分だけが気になるオプション要素であるため、linqクエリが必要です。

于 2008-10-09T04:05:36.190 に答える