2012-02-22 14 views
0

私はjavascriptとcssブロックでWebユーザーコントロールを持っています。私はjQueryを使ってメインページに動的にロードしています。ユーザーコントロールが "divTable"というdivにロードされたときに、警告( 'haha')を実行するにはどうすればよいですか?私た.ascxファイルでjQueryを使ってjavascriptを実行してdivに動的にユーザーコントロールを読み込む方法は?

は、私が.aspxのファイルで

<script type="text/javascript"> 
    function pageLoad(sender, args) { 
    alert('haha'); 
    } 
</script> 

を持って、私は.SVCファイルで

<script type="text/javascript"> 
    $(function() { 
     $('button').click(GetTable); 
    }); 

    function GetTable() { 
     debugger; 
     var id_1 = $('#txtID1').val(); 
     var id_2 = $('#txtID2').val(); 
     $.ajax({ 
      url: 'Services/Data.svc/RenderUC', 
      data: JSON.stringify({ path: 'Controls/ParameterizedTableControl.ascx', id1: id_1, id2: id_2 }), 
      type: "POST", 
      contentType: "application/json", 
      dataType: "json", 
      success: function (data) { 
       debugger; 
       $('#divTable').html(data); 
      }, 
      error: function showError(xhr, status, exc) { 
       debugger; 
       alert('error'); 
      } 
     }); 
    } 
</script> 

を持って、私はどれ

[OperationContract] 
    public string RenderUC(string path, string id1, string id2) 
    { 
     Page pageHolder = new Page(); 
     var viewControl = (ParameterizedTableControl)pageHolder.LoadControl(path); 
     viewControl.ID1= id1 
     viewControl.ID2 = id2; 
     pageHolder.Controls.Add(viewControl); 
     StringWriter output = new StringWriter(); 
     HttpContext.Current.Server.Execute(pageHolder, output, true); 

     return output.ToString(); 
    } 

答えて

1

を持っていますajax操作が完了したら、実行したいjavascriptを成功ハンドラに入れる必要があります。

function GetTable() { 
    debugger; 
    var id_1 = $('#txtID1').val(); 
    var id_2 = $('#txtID2').val(); 
    $.ajax({ 
     url: 'Services/Data.svc/RenderUC', 
     data: JSON.stringify({ path: 'Controls/ParameterizedTableControl.ascx', id1: id_1, id2: id_2 }), 
     type: "POST", 
     contentType: "application/json", 
     dataType: "json", 
     success: function (data) { 
      debugger; 
      $('#divTable').html(data); 

      // 
      // insert whatever you want here 
      // 

     }, 
     error: function showError(xhr, status, exc) { 
      debugger; 
      alert('error'); 
     } 
    }); 
} 
+0

可能であれば、javascriptをusercontrol内にカプセル化したいと思います。私はむしろaspxページに移動したりコピーしたりしません。 – Laguna

+0

それは非常に迅速に複雑になる可能性があります:)私はあなたのサービスの戻り値にスクリプトタグを注入することができると思います。 – jrummell

1

あなたは、このようなASCXコントロールであなたの<script>ブロック内のあなたの関数を呼び出すことができます。

<script type="text/javascript"> 
    function pageLoad(sender, args) { 
    alert('haha'); 
    } 
    pageLoad(); 
</script> 

ブラウザはスクリプトタグをレンダリングするときには、スクリプトの実行を行います。

+0

hmうまく動作しませんでした。私はdivTableに注入されたhtmlを調べると、CSSブロックがそこにありますが、javascriptブロックは...なぜなのでしょうか。 – Laguna

+0

あなたのascxのonloadイベントにjavascriptをRegisterScriptBlockなどで注入してみてください。 –

関連する問題