2009-08-16 23 views
5

は、私は、次のユーザーコントロールを得た:ASP.NETユーザーコントロールとjQueryのダイアログ

<div class="editFormDialog" style="display: none; font-size: 12px;"> 
    <mm:Form ID="editUC" ShowCreateButton="false" ShowEditButton="true" runat="server" /> 
</div> 

このUCは、DataSetを取り、公共性を有し、UCの一部のフィールドを更新します。

ページ上のボタンを押すと、UCでこのプロパティが呼び出され、UCがDataSetからのデータで更新されます。

これまでのところとても良いです。 UCをjQuery UIダイアログにしたいときに問題が発生します。

$('#btnEdit').live('click', function() { 
    $('.editFormDialog').dialog('open'); 
}); 

:(これはASP.NETボタン、プレーンなHTMLではありません)

$(document).ready(function() { 
    $('.editFormDialog').dialog({ 
     autoOpen: false, 
     height: 700, 
     width: 780, 
     modal: true, 
     bgiframe: true, 
     title: 'Rediger', 
     open: function(type, data) { 
      $(this).parent().appendTo("form"); 
      $(this).css('display', 'block'); 
     } 
    }); 
}); 

そして私は、ボタンプッシュで開くためにそれをwan't:

まず私は、ダイアログを作成しますダイアログが開きますが、UCに正しいデータが含まれていません。 ページが読み込まれると、UCはデフォルトデータで更新されます。ユーザーがボタンをクリックすると、データは変更されますが、UCは更新されません。依然としてデフォルトデータが含まれています。それは問題です。

理由はありますか?

大変助かります!

答えて

1

「プロパティを呼び出す」と正確に何が起こるのですか(これはメソッドであると思います)。ページはポストバックを実行しますか?その場合、jQueryをシナリオに混ぜるとポストバックが何とかブロックされてしまうことがありますか?

+0

ボタンをクリックして次のデータを取得します。ポストバックが発生します。 UCのプロパティは、 "editUC.EditData = ds;"のように設定されます。ページに新しいデータが表示されます。ダイアログポップアップを作成する別のボタンをクリックすると、UCにはまだデフォルトデータが含まれています。それはそれがデータソースの変更を登録していないように。しかし、私がUCをダイアログの外に表示すると、それは完全に機能します。 –

+0

それは奇妙に聞こえます:あなたのソースコードをさらに投稿できますか? –

+0

すべてが更新パネル内に配置されています。ダイアログを作成すると、更新パネルの外に移動することができますか?おそらく別の解決策は、それが開かれるたびにダイアログを作成し、閉じているときにダイアログを削除することです。もちろん、html要素を適切な場所に配置します。しかし、どうしたらいいですか? –

0

更新パネルを使用しているので、ページ内のjavascriptへの呼び出しをどのように注入していますか?部分的ポストバックで正しく動作する方法は1つしかないので、ScriptManager.RegisterStartupScript()を使用してください。これにより、JavaScriptコードがページが読み込まれたかのように動作するようになります。もちろん、他のonload javascriptも呼び出すことができますが、これはあなたが見ている動作につながる可能性があります。

ので、

  1. 使いのブラウザではJavaScriptがスクリプトマネージャを注入されていることを確認してください。
  2. あなたが部分ポストバック後 を実行したいのjavascriptのビットのみを確認してください は、データソースを変更するには、WebサービスとAJAXコントロールであなたのUCを回すの可能性もあります

を実行しています。通常はページの応答性を改善する部分的なポストバックはもうありません。

2

この問題の解決策を見つけました。それはあなたがフォームに追加するとき、あなたはこのコードのスニペットはjQueryのドキュメント内に準備ができていることを確認する必要があることが判明:

$("#dialog1").parent().appendTo($("form:first")); 

ので全部は次のようになります。

jQuery(document).ready(function() { 
    $("#<%=myFamilyGrid.ClientID %>").tablesorter({ 
     sortList: [[0, 1]] 
    }) 
     .tablesorterPager({ container: $("#pager") }); 


    $("#dialog1").dialog({ 
     modal: true, 
     height: 370, 
     width: "350px", 
     autoOpen: false, 
     bgiframe: false, 
     zIndex: 3999 
    }); 

    $("#dialog1").parent().appendTo($("form:first")); 
}); 

・ホープこれは役に立ちます!

関連する問題