单击我的asp.net按钮时,我的jQuery页面会崩溃

时间:2011-04-14 13:50:20

标签: jquery asp.net onclick linkbutton

我已经实现了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"
        });
    });

但它仍然无效。有什么想法吗?

修改 每个请求的新代码:

页面 -

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 个答案:

答案 0 :(得分:2)

将点击更改为

$(".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();";