私は c# asp.net でツリービューを設定しており、それにデータをバインドしていますが、すべて正常に表示されます。私の問題は、チェックボックスへの変更を保存しようとしていることです。つまり、ユーザーが追加のボックスをクリックして保存すると、チェックされた状態がfalseのままになります。
これまでのところ、変更されたものではなく、最初にロードされたものを反復処理するものがあります。多くのバリエーションを試しましたが、うまく機能させることができませんでした-誰かアイデアはありますか??
public void saveCheckedItems()
{
if (treeListItems.CheckedNodes.Count > 0)
{
IList<RadTreeNode> allNodes = treeListItems.GetAllNodes();
for (int i = 0; i < allNodes.Count; i++)
{
RadTreeNode node = (RadTreeNode)allNodes[i];
string fileid = node.Value.ToString();
if (node.Checked == true)
{
if (fileid.Length == 12)
{
saveTreeChanges(Page.Request.QueryString["ID"], fileid,connectionStr);
}
}
}
}
}
編集 -
次のようにツリービューを作成する
<telerik:RadTreeView ID="treeListItems" runat="server" CheckBoxes="True" Height="320px"
TriStateCheckBoxes="true" CheckChildNodes="true" Skin="WebBlue" CssClass="table table-bordered" OnNodeDataBound="RadTreeView1_NodeDataBound" >
</telerik:RadTreeView>
このようなバインディングデータ
public void loadTreeList()
{
DataTable dt = treeMan.getTreeList(connectionStr);
treeListItems.DataTextField = "Description";
treeListItems.DataValueField = "FieldID";
treeListItems.DataFieldID = "FieldID";
treeListItems.DataFieldParentID = "ParentID";
treeListItems.DataSource = dt;
treeListItems.DataBind();
treeListItems.ExpandAllNodes();
}
この例では、3 層のツリーをテストしており、1 つの要素が 3 層目でチェックされています。さらにアイテムをクリックすると、すでにチェックされているこのアイテムのみがリストに表示されます