У меня есть TreeView, который связан с элементом управления XmlDataSource. Я добавил несколько элементов TreeNodeBinding, чтобы определить способ отображения данных XML.
Я также добавил PopulateOnDemand = true к этим TreeNodeBindings. Однако это ничего не изменило, и отображается все дерево XML. Более того, событие TreeNodePopulate также не запускается при расширении узла.
Важная информация: я использую ASP.NET 4.
Это пример, который воспроизводит проблему (очень прямо):
<%@ Page Language="C#" AutoEventWireup="true" %>
<script type="text/C#" runat="server">
protected void TreeView1_TreeNodePopulate(Object sender, TreeNodeEventArgs e)
{
// This method is never called...
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView ID="TreeView1" runat="server" DataSourceID="XmlDataSource1" OnTreeNodePopulate="TreeView1_TreeNodePopulate" ExpandDepth="0">
<DataBindings>
<asp:TreeNodeBinding DataMember="#" TextField="#" ValueField="#" PopulateOnDemand="true" />
</DataBindings>
</asp:TreeView>
<asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="Sample.xml" />
</div>
</form>
</body>
</html>
Sample.xml может быть любым XML-файлом, который вам нужен, это не имеет значения.
Я пытался установить точку останова в методе TreeView1_TreeNodePopulate
, но она никогда не была достигнута.
Я также пытался:
- Установите привязку TreeNodeBinding для каждого возможного элемента данных с помощью PopulateOnDemand = "true".
- Через код просмотрите все узлы дерева и установите для их свойства PopulateOnDemand значение
true
.
Ничего не сработало.
Единственный способ, которым работало заполнение по требованию, состоял в том, когда я добавлял узлы вручную к узлам вместо того, чтобы связывать их с источником данных.
Что я делаю не так?