0

インターネット上のどこかから次の JQuery コードを使用して、ブラウザ ウィンドウのスクロールでコンテンツをロードしています。

var pageIndex = 1;
    var pageCount;
    $(window).scroll(function () {
        if ($(window).scrollTop() == $(document).height() - $(window).height()) {
            GetRecords();
        }
    }); 
    function GetRecords() {
        pageIndex++;
        if (pageIndex == 2 || pageIndex <= pageCount) {
            $("#loader").show();
            $.ajax({
                type: "POST",
                url: "CS.aspx/GetCustomers",
                data: '{pageIndex: ' + pageIndex + '}',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: OnSuccess,
                failure: function (response) {
                    alert(response.d);
                },
                error: function (response) {
                    alert(response.d);
                }
            });
        }
    }
    function OnSuccess(response) {
        var xmlDoc = $.parseXML(response.d);
        var xml = $(xmlDoc);
        pageCount = parseInt(xml.find("PageCount").eq(0).find("PageCount").text());
        var customers = xml.find("Customers");
        customers.each(function () {
            var customer = $(this);
            var table = $("#dvCustomers table").eq(0).clone(true);
            $(".name", table).html(customer.find("ContactName").text());
            $(".city", table).html(customer.find("City").text());
            $(".postal", table).html(customer.find("PostalCode").text());
            $(".country", table).html(customer.find("Country").text());
            $(".phone", table).html(customer.find("Phone").text());
            $(".fax", table).html(customer.find("Fax").text());
            $("#dvCustomers").append(table).append("<br />");
        });
        $("#loader").hide();
    }

ご覧のとおり、応答の成功に関する HTML テーブルが追加されています。しかし、コンテンツがスクロールするときに、この HTML テーブルの代わりに追加したい asp.net ユーザー コントロールがあります (つまり、JQuery からサーバー側コントロールを追加したいのです)。この HTML テーブルの代わりにユーザー コントロールの HTML を追加することはできません。そのコードは長すぎて複雑であり、JQuery についてあまり知らないからです。私は JQuery の初心者概念の初心者です。さらに、私はバックエンド プログラミングのスペシャリストです。したがって、そのビジネス ロジックを JQuery でコーディングすることはできません。だから、誰でもそうするのを手伝ってください。

4

3 に答える 3

1

kintaro alerady が提案したように; サーバー側(ユーザーコントロール内)でhtmlをレンダリングし、そのコントロールをWebメソッド内にロードして、結果をHTMLでクライアント側に返します。

以下に例を示します。

JavaScript コード:

var pageIndex = 0;
var data = { "pageIndex": pageIndex };
$.ajax({
    type: "POST",
    url: "CS.aspx/GetCustomers",
    data: JSON.stringify(data),
    contentType: "application/json; charset=utf-8"
}).done(function (result) {
    $("#dvCustomers").append(result.d);
});

サーバー側のPageMethod:

[WebMethod]
public static string GetCustomers(int pageIndex)
{
    Page pageHolder = new Page();
    UserControl viewControl = (UserControl)pageHolder.LoadControl("_path_to_customers_usercontrol");

    pageHolder.Controls.Add(viewControl);

    StringWriter output = new StringWriter();
    HttpContext.Current.Server.Execute(pageHolder, output, false);

    return output.ToString();
}

また、pageIndex 値を Customers ユーザー コントロールに渡す必要があります。それには、LoadControl メソッドの結果を Customer ユーザー コントロールを表すクラスにキャストし、PageIndex プロパティを設定します。

プロジェクトを ASP.NET Web サイトとして開発している場合は、リフレクションを使用してプロパティ値を設定する必要があります。次に例を示します。

Type viewControlType = viewControl.GetType();            
PropertyInfo field = viewControlType.GetProperty("PageIndex");

if (field != null)
{
    field.SetValue(viewControl, pageIndex, null);
} 
于 2013-11-19T10:18:13.840 に答える
0

div を作成し、この div にユーザー コントロールを配置します。次に設定し、visibility:hidden 成功したら表示します(jqueryvisibilityを使用するように設定します):visible

<div style="visibility:hidden" id="dv1">
 <uc1:usercontrol Visible="true" runat="server">...
</div>

Jクエリ:

$("#dv1").css("visibility","visible"); 
于 2013-11-08T16:21:56.917 に答える