3

フォルダピッカーがポップアップするWebページがあります。これにより、ユーザーはWebサイト上のフォルダーを選択し、そのコンテンツへの変更を追跡できます。

JavaScriptで返されるポップアップから値を渡し、それをサーバー側のメソッドに渡す必要があります。

私はSharePointを使用しているため、AJAXはこれには使用できません。

JavaScriptのコールバックから必要なデータを取得しますが、$(control).text()を設定しようとすると、これは機能しません。

ラベル(スパンとしてレンダリング)の値をなんとかして設定し、それをonClickに戻すことはできますか?

現在の作業コード:

$('.tile').on("click", ".LibraryPickerInitiator", function () {
    var hiddenField = $(this).siblings('[type=hidden]');
    var callback = $.proxy(function (s) { this.val(s); }, hiddenField);
    LaunchPickerTreeDialog('CbqPickerSelectListTitle', 'CbqPickerSelectListText', 'websLists', '', '/', '', '', '', '/_layouts/images/smt_icon.gif', '', callback, '', '');
});

マークアップ:

<div id="WebSettings" class="WebSettings" runat="server">
    <div class="LibraryPickerInitiator">Pick a Library</div>
    <asp:HiddenField ID="HiddenField1" runat="server" />
    <asp:Label ID="TreePickerLabel" CssClass="PickerPlaceHolder" runat="server" Text="No List Selected"></asp:Label>
    <asp:Button ID="SubmitList" runat="server" Text="Get List Data" onclick="SubmitList_Click" />
</div>

イベント:

protected void SubmitList_Click(object sender, EventArgs e)
{
    string pickerData = HiddenField1.Value;
}
4

1 に答える 1

1

できない理由はわかりません。$.proxy適切なスコープを確保するためにコールバックを作成するときに使用します。

var callback = $.proxy(function (s) {
    this.html(s); 
}, sisterLabel);

マークアップに非表示の入力を追加すると、クライアントコードを次のように変更できます。

var sibs = $(this).siblings();

var callback = $.proxy(function (s) {
    this.label.html(s); // set label text
    this.hidden.val(s); // set hidden field val
}, { label: sibs.filter('span'), hidden: sibs.filter(':input:hidden') });
于 2012-09-10T20:48:53.957 に答える