1

jQueryダイアログ内にレンダリングされるTelerikのDropDownListコントロールがいくつかあります

これは「単一ページ」のASP>NETMVCアプリケーションであるため、レコードを含むグリッドがあります。ユーザーがグリッドをダブルクリックするたびに、このダイアログウィンドウとすべてのTelerikコントロールの部分ビューをレンダリングするコントローラーへのAjax呼び出しを使用するjQueryダイアログが表示されます。モデルのプロパティにバインドされます。

初めてjQueryダイアログを呼び出すと、すべて正常に機能します

jQueryダイアログを2回呼び出すと、ダイアログが開き、モデルへのバインドは正常に行われますが、すべてのDropDownListコントロールが無効になっているように見えます。jScriptからenable()を呼び出そうとしましたが、役に立ちません。

DatePickerコントロールでも同じ問題が発生しますが、DatePickerでは日付を手動で(テキスト領域内で)編集できますが、カレンダーセレクターを表示することはできません。

したがって、jQueryダイアログの2回目の呼び出し後、このダイアログ内にあるTelerik MVCコントロールは、ポップアップdivを表示する機能を失っているようです(TelerikのDropDownListとDatePickerは、アイテムのリストまたはカレンダーを含むフローティングDIVを表示する必要があるのと似ています。矢印またはカレンダーアイコンをクリックします)が、編集可能な領域のテキストの手動編集は引き続き機能します。

この問題は、ダイアログの後にonParentNodeChanged()を使用することが提案されているhttp://www.telerik.com/community/forums/aspnet-ajax/editor/radeditor-and-jquery-dialog.aspxと非常によく似ているようです。 'open')メソッド。ただし、 onParentNodeChangedはTelerik ASP.NET MVC Extnetionsには存在せず、Telerik Rad(ASP.NET AJAX)コントロールの一部であり、jScriptから呼び出すことはできません。

何か案は?

4

2 に答える 2

3

ajaxで部分ビューを追加するときにも同様の問題があります。ビューをロードすると、コントロールは正しくロードされているように見えますが、テレリック スクリプトに関連付けられていないため、レンダリング後にトリガーする必要があります。以下のコード例:

//Action AddItem returns partial view which contains some standard inputs and telerik    date pickers
@Html.ActionLink("Add item", "AddItem", null, new { @class = "addNewItem" })

<div id=itemRows></div>

<script>
$(".addNewItem").click(function () {
    $.ajax({
        url: this.href,
        cache: false,
        success: function (html) {
            $("#itemRows").append(html);
        }
    });
    //I need to trigger all the datepickers to enable them (so I give datepicker class dateTime)
    $(".dateTime").tDatePicker({ format: 'd.M.yyyy' });
    return false;
});
</script>

日付ピッカーを試して、機能するかどうかを確認してください。ドロップダウンでも同じロジックが機能するはずです。

于 2012-05-08T10:21:04.013 に答える
1

TinyMCE と DialogautoOpenを false に設定すると、この問題が発生しました。私たちのために働いた修正は、次のopenようなダイアログのイベントを使用していました:

$(element).dialog({ 
   // some more options...
   open: function (type, data) {
       $(this).parent().appendTo($("form:first"));
    }
});
于 2012-05-04T13:30:58.370 に答える