O ASP.NET 2.0 TreeView possui muitos recursos integrados, como mostrar uma caixa de seleção para todos os nós da árvore. Formatação, estilo de nível de nó, etc., ativar a propriedade ShowCheckBoxes="All" define-a para mostrar uma caixa de seleção para todos os nós. As outras opções são Leaf, None, Parent e Root que mostram caixas de seleção nos respectivos níveis de nó. Nenhum não exibe CheckBoxes.
Quando definimos ShowCheckBoxes="All", gostaríamos de fornecer um recurso onde as pessoas pudessem marcar a caixa de seleção no nó raiz para que todas as outras caixas de seleção fossem marcadas automaticamente. Basicamente, quando o nó pai é verificado, todos os nós filhos devem ser verificados automaticamente.
Seria intuitivo realizar esta tarefa no lado do cliente sem envolver um postback.
O trecho de código a seguir ajuda a fazer o mesmo.
Declaração TreeView
<asp:TreeView ID="TreeView1" Runat="server" DataSourceID="XmlDataSource1" onclick="client_OnTreeNodeChecked();" ShowCheckBoxes="all">
<DataBindings>
<asp:TreeNodeBinding DataMember="Category" ValueField="ID" TextField="Name"></asp:TreeNodeBinding>
<asp:TreeNodeBinding DataMember="Description" ValueField="Value" TextField ="Valor"></asp:TreeNodeBinding>
</DataBindings>
</asp:TreeView>
No código de declaração TreeView acima, você pode encontrar a propriedade onclick="client_OnTreeNodeChecked();" evento que na verdade é a função JavaScript que realizaria esta tarefa.
O trecho de código Javascript é o seguinte: -
<script language="javascript" type="text/javascript">
função client_OnTreeNodeChecked()
{
var obj = window.event.srcElement;
var treeNodeFound = falso;
var estado verificado;
if (obj.tagName == "ENTRADA" && obj.type == "caixa de seleção") {
var treeNode = obj;
verificadoState = treeNode.checked;
fazer
{
obj = obj.parentElement;
} while (obj.tagName! = "TABELA")
var parentTreeLevel = obj.rows[0].cells.length;
var parentTreeNode = obj.rows[0].cells[0];
var tabelas = obj.parentElement.getElementsByTagName("TABELA");
var numTables = tabelas.length
if (numTabelas >= 1)
{
for (i=0; i <numTables; i++)
{
if (tabelas[i] == obj)
{
treeNodeFound = verdadeiro;
eu++;
if (i == numTabelas)
{
retornar;
}
}
if (treeNodeFound == verdadeiro)
{
var childTreeLevel = tabelas[i].rows[0].cells.length;
if (childTreeLevel > parentTreeLevel)
{
var célula = tabelas[i].rows[0].cells[childTreeLevel - 1];
var entradas = cell.getElementsByTagName("ENTRADA");
entradas[0].checked = checkState;
}
outro
{
retornar;
}
}
}
}
}
}
</script>