2016-07-16 22 views
0

Ich habe dieses Script-Code java, die aus der Datenbank Organigramme erzeugenWie verhindert man, dass JavaScript-Funktion ausgeführt wird, wenn die Seite Postback ist?

<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> 

und diese Web-Methode in C# -Code hinter

[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; 

    } 

das Diagramm jedes Postbacks regeneriert wird und wenn Seite Last obwohl ich Java-Skript-Funktion überhaupt nicht aufgerufen

wie man das stoppt? Ich möchte nur Grafik erzeugen whene butten

Antwort

0

Klicken Sie zuerst, müssen Sie diesen google.setOnLoadCallback(drawChart); entfernen, dann können Sie die jQuery Ereignis wie dieses klicken:

$(function() { 

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

}); 

eine Schaltfläche, um Ihre HTML wie folgt hinzufügen:

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

vielen Dank^_^ –

+0

Gern geschehen: D –