[英]Linkbutton inside Repeater for paging ASP.Net
我正在做一個帶有搜索的網頁,它會從MSSQL中獲取大量信息。 我所做的是一個存儲過程,只返回要在網站上看到的頁面。
現在我正在進行分頁,因為我需要顯示類似於谷歌的東西。 如果您在第1頁,他們會顯示前10頁,如果您在第19頁,則顯示自第9頁到第28頁。
我認為顯示頁碼的最佳選擇是在轉發器中使用鏈接按鈕。 我現在遇到的問題是我不知道在回發時獲取頁碼的最佳方法。
做一個快速示例我將一個ArrayList分配給repeater.datasource:
<asp:Repeater ID="Repeater2" runat="server">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandArgument="<%# Container.DataItem %>"><%# Container.DataItem %></asp:LinkButton>
</ItemTemplate>
</asp:Repeater>
<asp:LinkButton ID="LinkButton2" runat="server" CommandArgument="4654">Test #1</asp:LinkButton>
在我的Default.aspx.cs文件中,我有下一個代碼
protected void Page_Load(object sender, EventArgs e)
{
if (this.IsPostBack)
{
string x = LinkButton2.CommandArgument;
//string y = LinkButton1.CommandArgument;
//I know this line will not work since the Linkbutton1 is inside the Repeater.
}
我該怎么做才能使它有效?
有沒有人有這個分頁更好的解決方案?
謝謝
傑瑞
您正在尋找ItemCommand事件:
<asp:Repeater ID="Repeater1" OnItemCommand="ItemCommand" runat="server">
<ItemTemplate>
<asp:LinkButton CommandName="ButtonEvent" CommandArgument="<%# Container.DataItem %>" Text="<%#Container.DataItem %>" runat="server"></asp:LinkButton>
</ItemTemplate>
</asp:Repeater>
代碼背后:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Repeater1.DataSource = Enumerable.Range(1, 10);
Repeater1.DataBind();
}
}
protected void ItemCommand(Object Sender, RepeaterCommandEventArgs e)
{
Response.Write("The no. " + ((LinkButton)e.CommandSource).Text + " button was clicked!");
}
...但你真的確定你需要LinkButton嗎? 一個普通的HTML錨標簽也可以正常工作,並且它的模糊性較低。 :)
我使用了@JakobGade,這對我有用:
<asp:Repeater ID="rpMemList" runat="server" ClientIDMode="Static"
onitemcommand="rpMemList_ItemCommand">
<ItemTemplate>
<asp:LinkButton ID="lbMember" CommandArgument='<%# Eval("memID")%>' CommandName="SelMem" runat="server" ClientIDMode="Predictable"><%# Eval("memFullName")%></asp:LinkButton>
</ItemTemplate>
</asp:Repeater>
然后在代碼隱藏中測試它:
protected void rpMemList_ItemCommand(object source, RepeaterCommandEventArgs e)
{
string a = e.CommandArgument.ToString();
string b = e.CommandName.ToString();
string c = e.CommandSource.ToString();
string d = e.Item.ToString();
}
只是想一想,您是否嘗試過使用“DataGrid”對象,添加一個列,使其成為一個項目模板,然后放入您需要在格式化的模板中重復的元素。 當設置為true時,DataGrid也會自動處理分頁...
你從未說過你的分頁是什么類型的控制。 如果您使用的是ASP.Net 3.5,那么我強烈建議使用ListView控件並使用DataPager控件處理分頁。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.