Когда нажимается моя кнопка asp.net, моя страница jQuery функционально разрывается - PullRequest
0 голосов
/ 14 апреля 2011

Я реализовал плагин jQueryPagination, чтобы обеспечить легкую подкачку элемента управления повторителя. Это работает нормально, однако на этой странице у меня есть пользовательский элемент управления, который позволяет пользователю искать номер билета. При нажатии на кнопку для поиска нумерация страниц исчезает, и я вижу всю информацию о ретрансляторе, а также мой возвращенный результат поиска.

Когда я нажимаю кнопку ссылки, мой jQuery кажется несуществующим.

Код:

<div id="msgLinks" class="subtabs">
            <asp:TextBox runat="server"  ID="txtSearchTicket"></asp:TextBox>
            <asp:LinkButton ID="lbSearch" runat="server" Text="Search" CausesValidation="false"
                onclick="lbSearch_Click" />
 </div>

jQuery (работает при загрузке страницы)

$('#tblRecAct').paginateTable({
        rowsPerPage: 5,
        Title: ".h1RecentActivity"
    });
    $('#tblMSG').paginateTable({
        rowsPerPage: 2,
        Title: ".h1SubmittedMessages",
        pager: ".pager2",
        pageNumbers: ".pageNumbers2"

    });

Я даже пытался позвонить

$(".subtabs a").click(function () {
        alert("Clicked");
        $('#tblRecAct').paginateTable({
            rowsPerPage: 5,
            Title: ".h1RecentActivity"
        });
    });

но все равно не работает. Есть идеи?

EDIT Новый код для запроса:

Страница -

public string _Js = "";
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                rptRecentMessages.DataSource = CMS.Model.Profile.RecentMessages(0, "");
                rptRecentMessages.DataBind();
                _Js = "CreatePaging();";
                LoadStatusMessages();
            }
        }

Контроль пользователя (удерживает кнопку поиска) -

rptRecentActivity.DataSource = CMS.Model.Profile.RecentActivity(20);
rptRecentActivity.DataBind();
_Js = "CreatePaging();";

Нажатие кнопки поиска -

protected void lbSearch_Click(object sender, EventArgs e)
        {
            string searchTerms = txtSearchTicket.Text;
            if (searchTerms == "")
                txtSearchTicket.Style.Add("border", "1px solid red");
            else
            {
                rptRecentMessages.DataSource = CMS.Model.Profile.RecentMessages(1, searchTerms);
                rptRecentMessages.DataBind();
                _Js = "CreatePaging();";
                LoadStatusMessages();
            }
        }

Код jQuery на странице -

<script type="text/javascript">
    $(document).ready(function () {
        function CreatePaging(){
            $('#tblRecAct').paginateTable({
                rowsPerPage: 5,
                Title: ".h1RecentActivity"
            });
            $('#tblMSG').paginateTable({
                rowsPerPage: 2,
                Title: ".h1SubmittedMessages",
                pager: ".pager2",
                pageNumbers: ".pageNumbers2"

            });
        }

        $().ready(function(){
            <% =(this._Js) %>

        });

    });



</script>

Когда я сейчас отлаживаю и нажимаю на ссылку поиска, я не получаю постбэк на page_load и не знаю почему.

1 Ответ

2 голосов
/ 14 апреля 2011

Измените клик на

$(".subtabs a").click(function () {
    alert("Clicked");
    $('#tblRecAct').paginateTable({
        rowsPerPage: 5,
        Title: ".h1RecentActivity"
    });
    return false;
});

, добавив код return false;, чтобы предотвратить щелчок ссылки, но запустит ваш код jQuery.

РЕДАКТИРОВАТЬ

Поместите свой код jQUery в функцию, чтобы вы могли легко вызывать его из вашего c #

function CreatePaging(){
    $('#tblRecAct').paginateTable({
        rowsPerPage: 5,
        Title: ".h1RecentActivity"
    });
    $('#tblMSG').paginateTable({
        rowsPerPage: 2,
        Title: ".h1SubmittedMessages",
        pager: ".pager2",
        pageNumbers: ".pageNumbers2"

    });
}

$().ready(function(){
    <% =(this._Js) %>
});

Затем в вашем коде есть открытая строковая переменная с именем _Js, а когда вы связываете Repeater,набор _Js = "CreatePaging();";

...