0

私は 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 層目でチェックされています。さらにアイテムをクリックすると、すでにチェックされているこのアイテムのみがリストに表示されます

4

1 に答える 1

0

これを試して:

public void saveCheckedItems()
{
    IList<RadTreeNode> nodeCollection = treeListItems.CheckedNodes;
    foreach (RadTreeNode node in nodeCollection)
    {
        string fileid = node.Value.ToString();
        if (fileid.Length == 12)
        {
            saveTreeChanges(Page.Request.QueryString["ID"], fileid, connectionStr);
        }
    }
}

チェックされたノードの状態を保持する唯一の方法は、ページのポストバック間で存続するオブジェクトにノードを配置することです。CookieまたはASP.NETセッション状態を使用することをお勧めします。次のコメントの例を検討してください:http ://www.telerik.com/community/code-library/aspnet-ajax/treeview/save-the-expanded-state-of-the-treenodes-when-the-treeview- is-being-bound-upon-each-postback.aspx#1603151

于 2013-02-07T14:26:32.250 に答える