2015-01-19 2 views
0

여기에 누락 된 것이 있어야합니다. 노드 체크 데이터를 쿠키에 저장하는 두 개의 RadTreeView 인스턴스가 있습니다. 페이지가로드되면이 쿠키를 읽고 상태를 적절하게 설정하려고합니다. 지속성에서 프로그래밍 방식으로 RadTreeView 노드 체크 상태를 설정하려고 시도했습니다.

protected void RadTreeView1_OnDataBound(object sender, EventArgs e) 
     {    
      HttpCookie checkedCookie = Request.Cookies[DataType + "Checked"]; 
      if (checkedCookie != null) 
      { 
       var cookieValue = checkedCookie.Values["Checked"]; 
       if (cookieValue != null) 
       { 
        var checkedNodeValues = cookieValue.Split('*'); 
        foreach (string nodeValue in checkedNodeValues) 
        { 
         RadTreeNode checkedNode = RadTreeView1.FindNodeByValue(HttpUtility.UrlDecode(nodeValue)); 
         if (checkedNode != null) 
          checkedNode.Checked = true; 
        } 
       } 
      }     
     } 

그리고 foreach 루프에서

, 나는 모든 쿠키 값에 대한 해당 노드를 찾을 수 :

그래서 나는이 OnDataBound 이벤트가 있습니다. 더 중요한 것은 초기 체크 상태가 거 ~입니다.

다른 노드도 확인되는 이유는 무엇입니까?

+0

CheckChildNodes = True입니까? TriStateCheckBoxes는 어떤가요? –

+0

CheckChildNodes = True입니다. TriStateCheckBoxes를 사용하지 않습니다. –

+1

CheckChildNodes가 True이고 부모를 확인하면 "다른"노드도 확인되는 이유를 설명 할 수 있습니다. 그러면 모든 자식도 확인됩니다. –

답변

0

RadPersistenceFramework를 사용해보십시오. PersistenceManager (또는 PersistenceManagerProxy) 컨트롤에 트리 뷰에 대한 단일 항목을 추가하면 체크 된 상태를 저장할 수 있습니다. 여기에서 볼 수 있습니다 http://demos.telerik.com/aspnet-ajax/treeview/examples/applicationscenarios/persisting-treeview-settings/defaultcs.aspx?product=persistenceframework

물론 데이터 저장은 약간의 차이가 있습니다 (사용자 지정 공급자가있을 수 있으며 데이터를 쿠키에 보관하거나 데이터베이스에 보관할 수 있습니다. 너 : http://demos.telerik.com/aspnet-ajax/persistence-framework/examples/custom-storage-provider/defaultcs.aspx).

관련 문제