2015-01-26 5 views
1

json 문자열을 반환하고 jstree를 채우는 모든 webmethod를 가지고 있으며 모든 텍스트 상자를 완벽하게 작동합니다. 사용자가 다른 텍스트 상자를 클릭 할 때마다 jquery에서 다른 값을 전달하지만 webmethod는 호출 된 후 실제로 호출되지 않습니다. 그래서 매번 webmethod를 호출하기 위해 내가 무엇을 정리해야하는지 궁금합니다.jquery 메서드는 처음으로 webmethod를 호출하고 호출 된 다른 시간을 건너 뜁니다.

function showtree1(thisID, line) { 
    $('#jstree_demo_div').jstree.empty; 
    $('#jstree_demo_div').jstree({ 
     "core": { 

      "data": //data - jquery 
       { 
        type: "POST" 
        , dataType: "json" 
        , contentType: "application/json; charset=utf-8" 

        , url: "FlowCycleReport.aspx/populateTree" 

        //, data: "{'imgID':'" + thisID + "'}" 
        , data: JSON.stringify({ imgID: thisID, line: line }) 
        //, "data": function (node) { 
        // //return "{'id':'" + $(node).attr("id") + "'}"; 
        // return node.d; 

        //} 
        , success: function (node) { 
         var ReturnString = node.d; 
        // alert(ReturnString); 
         return { "id": node.id }; 
        }///success 


        , error: function (msg) { 

         alert("Error: " + msg.responseText); 

        }///error 
       }//data 
     }///core 
, 
     "plugins": ["themes", "json_data", "search", "contextmenu", "types"] 

    }); 
} 

의 WebMethod :

[WebMethod] 
    //public static string populateTree(string imgID, int node) 
    public static string populateTree(string imgID, string line) 
    { 
     DAL_Flow DL = new DAL_Flow(); 
     //string line = "278"; 

     string nodevalues = DL.JsonNav(imgID, line); 

     return nodevalues; 

    } 

onclick 이벤트 :

$(function() { 
     $(".textbox").click(function (e) { 

      var thisID = $(e.target).attr("ID"); 

      var csID = thisID.substr(thisID.lastIndexOf("_") + 1); 
      $('#posDetailDiv').hide(); 


      var line = $('#dlLine').val(); 

      // Reset the header: 
      $('#PartHeaderDiv').empty(); 
      $('#PartHeaderDiv').append('Line Number: ' + line + ': Control Station ' + csID); 

      showtree1(csID, line); 

      $('#posDetailDiv').show(); 


     }); 
    }); 

스크립트 관리자 :

<asp:toolkitscriptmanager runat="server" EnablePageMethods="true" ></asp:toolkitscriptmanager> 

CSID 값 라인 내 헤더를 클릭 할 때마다 만에 변경 treeview 값은 그렇지 않습니다.

나는 웹 메소드에 충돌이 없는지 확인하기 위해 웹 메소드에 중단 점을 넣었습니다.

나는 뭔가를 놓친 것 같습니다.

아무도 도와 줄 수 있습니까?

+2

사용자 입력을 클릭 할 때마다 트리를 완전히 지우는 이유는 무엇입니까? 플러그인은 데이터를 관리하기위한 견고한 API를 가지고 있습니다. – charlietfl

+0

b/c 트리마다 채우기 위해 다른 매개 변수를 전달할 때마다 트리를 새로 고쳐야합니다. 게으른 로딩은 우리가 사용하고있는 브라우저에서 작동하지 않으므로 매번로드합니다. 실제로 $ ('# jstree_demo_div')로 작업하는 새로 고침 부분이 있습니다. jstree ("refresh"); 그래서 그건 힘든 일입니다. 하지만 지금, 제 웹 메쏘드를 두 번째로 치는 경우, jquery의 매개 변수는 정확하지만 webmethod에는 여전히 첫 번째 매개 변수가 전달됩니다. – user3434209

+0

플러그인을 사용하면 플러그인이 모든 것을 수행 할 수 있다는 의미가 아닙니다. 매개 변수 또는 매개 변수 없음 – charlietfl

답변

1

내가 처음 생각할 수있는 것은 그것이 클릭 될 때마다 모든 것을 지우고 다시 작성하기 때문에 동적으로 결합되지 않았기 때문에 .click 이벤트도 지워집니다. 그래서 그 대신 일을 :

$(".textbox").click(function (e) { 

을 할 수있다 :

$(".textbox").on('click', function (e) { 
    //click event code goes here 
}); 

은 그래서 당신의 클릭 이벤트는 나중에 추가 된 동적 .textbox 요소도 모든 시간을 등록 할 것입니다.