リストの AllItems ページで、リストを表示する Web パーツの上にコンテンツ エディター Web パーツを追加しました。この Web パーツには、HTML ボタンのみが含まれています。ユーザーがボタンをクリックすると、リスト内のすべての項目がいくつかの JavaScript/jQuery/AJAX 関数によって処理されます。しかし、リストには 1000 以上の項目が含まれており、コードが項目を処理していることをユーザーに知らせないのはユーザーフレンドリーではありません。
まず、開発目的で、メソッド間にアラートを使用して、ある種のインタラクティブ性を示し、ユーザーに情報を提供しました。しかし今、私は jQuery Modal Dialog を使用して、コードが項目を処理していることを適切な方法でユーザーに示しています。
ダイアログは表示されますが、画面の中央に配置されず、タイトル バーがダイアログの幅いっぱいに表示されず、透明な灰色のオーバーレイが表示されません。空の ASP.NET Web アプリケーションでまったく同じコードをテストしたところ、そのコンテキストではすべて正常に動作しました。
jQuery 1.8.2 と jQuery UI 1.10.1 を使用しています。とにかく、ここに私が持っているものがあります:
function showProcessDialog() {
showDialog("Please wait while processing all items...", null);
}
function showDialog(message, dialogButtons) {
$("#messageContainer").text(message);
$('#dialog-message').parent().appendTo($('form:first'));
$("#dialog-message").dialog({
draggable: false,
height: "auto",
modal: true,
open: function (event, ui) { $(".ui-dialog-titlebar-close").hide(); },
position: { my: "center", at: "center", of: window },
resizable: false,
width: 400,
buttons: dialogButtons
});
}
次の行に注意してください。
$('#dialog-message').parent().appendTo($('form:first'));
ページが SharePoint 2007 に読み込まれると、jQuery が DOM を操作し、ダイアログとして機能する div 要素がボディの外側に配置されることを読みました。これに関する最大の問題は、ダイアログ内のサーバー側のコントロールが機能しなくなり、この行によって div がフォームに戻されることです。あなたが決して知らないので、私はそこに残しました...
ASP.NET Web アプリケーションでの結果は次のとおりです。
これは、SharePoint 2007 の同じコードです。
結果が実際のものと同じになるように、これを解決する方法を知っている人はいますか? 前もって感謝します!