2016-07-16 20 views
0

は、私は、データベースページがポストバックのときにjavascript関数が実行されないようにするには?

<script type="text/javascript"> 
    google.load("visualization", "1", { packages: ["orgchart"] }); 
    google.setOnLoadCallback(drawChart); 
    function drawChart() { 
     $.ajax({ 
      type: "POST", 
      url: "add org unit.aspx/GetChartData", 
      data: '{}', 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 

      success: function (r) { 
       var data = new google.visualization.DataTable(); 
       data.addColumn('string', 'Entity'); 
       data.addColumn('string', 'ParentEntity'); 
       data.addColumn('string', 'ToolTip'); 
       for (var i = 0; i < r.d.length; i++) { 
        var employeeId = r.d[i][0].toString(); 
        var employeeName = r.d[i][1]; 
        var designation = r.d[i][2]; 
        var reportingManager = r.d[i][3] != null ? r.d[ 
         i][3].toString() : ''; 
        data.addRows([[{ 
         v: employeeId, 
         f: '<a target="_blank" href="edit emp cv.aspx?employeeId='+employeeId+'">' + employeeName + '</a>' + '<div><span>' + designation + '</div></span>', 
        }, reportingManager, designation]]); 
       } 
       var chart = new google.visualization.OrgChart($("#chart")[0]); 
       chart.draw(data, { allowHtml: true }); 
      }, 
      failure: function (r) { 
       alert(r.d); 
      }, 
      error: function (r) { 
       alert(r.d); 
      } 
     }); 
    } 
</script> 

から組織図を生成し、このJavaスクリプトコードとチャートがすべてのポストバックを再生させる

[WebMethod] 
    public static List<object> GetChartData() 
    { 
     DataLayer.StoreDBEntities dbEntities = new DataLayer.StoreDBEntities(); 
     List<object> chartData = new List<object>(); 
     List<DataLayer.org_unit> result = dbEntities.org_unit.ToList(); 
     foreach (DataLayer.org_unit unit in result) 
     { 
      string name = unit.org_unit_type.alias + " " + unit.name; 
      string Details = ""; 

      if (unit.emp_assignment.ToArray().Length != 0) 
      { 
       List<DataLayer.emp_assignment> empAssigns = unit.emp_assignment.ToList(); 
       foreach (DataLayer.emp_assignment assign in empAssigns) 
       { 

        Details += assign.job_title.alias + ":" + assign.employee.name + "<br/>"; 
       } 
      } 
      chartData.Add(new object[] { unit.id, name, Details, unit.upper_unit_id }); 
     } 
     return chartData; 

    } 

の背後にあるC#のコードでこれらのWebメソッドを持っているとページがIが負荷 ときJavaスクリプト関数をまったく呼び出さなかった

これをやめる方法は?私はwhene butten

答えて

0

ファーストをクリックして、チャートを生成したい、あなたは、あなたがこのようなイベントをクリックしてjQueryのを使用することができ、このgoogle.setOnLoadCallback(drawChart);を削除する必要があります。

$(function() { 

    $('#draw-chart').click(function(event) { 
     event.preventDefault(); 
     drawChart(); 
    }); 

}); 

このようなあなたのHTMLにボタンを追加します。

<button id="draw-chart">Draw Chart</button> 
+0

ありがとう^ _^ –

+0

あなたは歓迎です:D –

関連する問題