2011-04-14 58 views
0

我已经实现了jQueryPagination插件,以便轻松分页中继器控件。这工作正常,但在此页面上我有一个用户控件,允许用户搜索票号。点击搜索按钮后,分页消失,我可以看到所有中继器信息以及返回的搜索结果。当我的asp.net按钮被点击,我的jQuery页面功能打破

当我点击链接按钮我的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中,我不知道为什么。

+0

粘贴你的ASP代码生成的实际HTML – JohnP 2011-04-14 13:54:20

+0

为什么你会使用'onclick =“...”'属性当你使用jquery你击败它的灵魂pur姿势 – Val 2011-04-14 14:01:51

+0

我认为这是因为当你点击链接按钮时,会发生回传,导致当前行为。尝试将'return false;'放在代码的最后一行下面,点击linkbutton时会触发它。 – 2011-04-14 14:02:57

回答

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当你绑定直放站,设置_Js = "CreatePaging();";

+0

这肯定解决了分页中断的问题,但现在我的c#代码按钮点击不会被调用。 – EvanGWatkins 2011-04-14 14:03:58

+0

啊,好吧你需要做的是在回发后再次输出jQuery。所以即使它在页面上运行,在回发之后再次输出它。 – 2011-04-14 14:05:27

+0

我会如何强制它回发后运行?如果可能的话,我想在我的C#中删除编码我的jQuery,但如果需要,我可以,你有什么建议? – EvanGWatkins 2011-04-14 14:07:32

相关问题