-1

<ul> <li>ASP.NETページに基本的な構造があります。これで動的レコードを取得して<li>います。問題は、ユーザーが次のボタンをクリックすると、最後のページを確認し、最後のページに到達した場合はアラートメッセージを表示する必要があることです。

jQueryでtotalPagesを取得しています。アラートを配置すると、メッセージが表示されTotalPageますが、条件に同じコードを記述しても、if評価されません。以下は私のJavaScript関数です。

var totalPages = -1;
function MostPopularSlideShows(currentPage, pager, mostpopular_data) {
    $.ajax({
        type: "POST",
        url: "SlideShowAdmin/Ajax/SlideShow.aspx/MostPopularSlideList",
        dataType: "json",
        contentType: "application/json",
        data: "{\"CurrentPage\":'" + currentPage + "'}",
        success: function (data) {
            var result = data.d;
            var totalPages = result[0].TotalPages;
            //alert(totalPages); This works fine.
            if (currentPage > totalPages) //Here it never evaluates
            {
                alert("You have reached last page");
                currentPage -= 1;
            }
            else {
                $("#" + pager).html(currentPage + "/" + result[0].TotalPages);
                $("#" + mostpopular_data).html("");
                $.each(result, function (index, item) {
                    $("#" + mostpopular_data).append("<li><img src=\"images/most_popr_pic1.jpg\" width=\"153\" height=\"90\" alt=\"\" class=\"floatleft\" /><h6>" + item.SlideShowName + "</h6><h3><a href=\"#\">" + item.Title + "</a></h3><h4>" + item.Description + "</h4></li>");
                })
            }
        },
        error: function (data) {
            alert("Cannot Get Most Popular SlideShow, Server Threw below error:\n" + data.responseText);
        }
    });
}

以下は私のAjax関数です。

[WebMethod]
public static SlideList[] MostPopularSlideList(int CurrentPage)
{
    List<SlideList> list = new List<SlideList>();
    DataSet d = SqlHelper.ExecuteAdapterForDataSet("user_MostPopularSlideShow", new SqlParameter[] { new SqlParameter("@PortalID", PortalId), new SqlParameter("@CurrentPage", CurrentPage) }, CommandType.StoredProcedure);
    foreach (DataRow r in d.Tables[0].Rows)
    {
        SlideList _slide = new SlideList();
        _slide.Id = Convert.ToInt32(r["Id"]);
        _slide.SlideShowId = Convert.ToInt32(r["SlideShowId"]);
        _slide.Description = r["SlideDescription"].ToString();
        _slide.CreatedDate = (r["CreatedDate"]).ToString();
        _slide.Thumbnail = r["Thumbnail"].ToString();
        _slide.Total = Convert.ToInt32(d.Tables[1].Rows[0]["TotalRows"]);
        _slide.TotalPages = Convert.ToInt32(d.Tables[1].Rows[0]["TotalPages"]);
        _slide.Title = r["SlideTitle"].ToString();
        _slide.SlideShowName = r["SlideShowName"].ToString();
        list.Add(_slide);
    }
    return list.ToArray();
}

totalPagesを評価しないのはなぜですか?

4

1 に答える 1

0

実際、次のコード ブロックは決して実行されないと思います。

if (currentPage > totalPages) //Here it never evaluates
{
    alert("You have reached last page"); 
    currentPage -= 1;
}

current page最大で であるためtotalPages、次のように等価性をチェックできます。

if (currentPage == totalPages) //Here it never evaluates
{
    alert("You have reached last page"); 
    currentPage -= 1;
}
于 2012-04-24T19:24:42.933 に答える