2008-10-09 10 views
0

Quelqu'un sait comment analyser le DOM et déterminer quelle ligne est sélectionnée dans un ListView ASP.NET? Je suis capable d'interagir avec le DOM via le HtmlElement dans Silverlight, mais je n'ai pas réussi à localiser une propriété indiquant que la ligne est sélectionnée.DOM Analyse

Pour référence, cette méthode fonctionne très bien géré pour un ListBox ASP.NET

var elm = HtmlPage.Document.GetElementById(ListBoxId); 

foreach (var childElm in elm.Children) 
{ 
    if (!((bool)childElm.GetProperty("Selected"))) 
    { 
     continue; 
    } 
} 

Répondre

0

Je n'ai pas mon environnement de développement pour tester cela, mais pourriez-vous appeler GetProperty (« selectedIndex ») sur la Élément ListBoxID? Ensuite, à partir de là, vous déterminez quel enfant est sélectionné et renvoyez cet enfant en utilisant l'orme.Enfants.

Editer: J'ai installé mon environnement de développement ce matin et j'ai fait quelques tests. Voici un extrait de code qui a fonctionné pour moi:

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"); 

Bien sûr, vous devrez changer « textSelect » au nom de votre élément HTML select. La requête linq est nécessaire car la propriété Children est composée de ScriptableObjects et seulement la moitié d'entre eux sont les éléments d'option qui vous intéressent.

1

Si votre listview a une classe spécifique pour la ligne css sélectionnée, vous pouvez essayer de filtrer ce

1

mathieu suggestion fourni devrait fonctionner correctement. Puisque vous avez mentionné la ligne, je dirais ajouter un ID à l'élément tr dans votre ListView que vous pouvez ensuite trouver avec jQuery.

Ainsi,

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

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

});