0

リストの 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 アプリケーションでの結果は次のとおりです。

ASP.NET Web アプリケーションでの作業

これは、SharePoint 2007 の同じコードです。

SharePoint 2007 で動作しない

結果が実際のものと同じになるように、これを解決する方法を知っている人はいますか? 前もって感謝します!

4

3 に答える 3

1

jQuery および jQuery UI の最新バージョンにアップグレードしようとしていたアプリケーションで、まったく同じ問題が発生しました。私はIE 8を(7モードで)実行していました。

アップグレードする前に機能していたのは、jQuery 1.6.2 と jQuery UI 1.8.16 でした。最終的に、クライアントがいずれにしてもすぐに SP 2010 にアップグレードされたため、これらのバージョンに戻しました。

    $('#search-modal').dialog({ autoOpen: false, bgiframe: true, modal: true, width: 400, height: 550, resizable: false });
    $('#search-modal').dialog('open');
    $('#search-modal').parent().appendTo($("form:first"));

幸運を!

于 2013-03-05T03:34:21.403 に答える
1

ここでテストできる非常に単純化されたバージョンを作成しました。また、スタイリングから、いくつかの jquery-ui アイテムが適切にロードされていないように見えます。クロムのデバッガー /firebug の「ネットワーク」セクションを調べて、ロードされていないアイテムがあるかどうかを確認しましたか?

function showDialog(message, dialogButtons) {
   var dialog1 = $('<div id="main_content" class="ui-widget" title="Documents"></div>');
   $(dialog1).html(message);
   $(dialog1).dialog({ width: 200, height: 200, position: "center" ,modal:true});
}

次のように、Dialog DOM 要素を css で中央に配置するように手動で変更してみましたか。

.center
{
    margin-left:auto;
    margin-right:auto;
    width:70%;
}
于 2013-02-27T12:44:39.097 に答える
0

問題は IE ドキュメント モードにあります。デフォルトでは、SP2007 ページは互換モードでレンダリングされます。これは、上記のコメントで述べたように、IE が互換モードに入るためです。そのため、ASP ソリューションとは異なります。
IE7+ ドキュメント モードに切り替えると、jQuery は機能しますが、sharepoint ページのレンダリングに関連するいくつかの新しい問題が発生する可能性があります。

このような場合はカスタム jsを使用する方が柔軟性が高いため、好んで使用します。div を中央に配置するには、表示ボタンの onclick 動作を次のように変更する必要があります。

pos = get_scroll(); 
$("#dialog").css({ 
    'top': pos.y,
    'left': pos.x + window.screen.availWidth / 2,
    'margin-left': 50}
).show();

ご覧のとおり、ここでも閉じるボタンの問題が既に発生しており、コンテンツ div がダイアログ div よりも大きくなると、後でオーバーフローの問題が発生します。

于 2013-04-19T11:22:29.120 に答える