Forum
Merhaba arkadaşlar, asp.net'te şöyle bir şey yapmaya çalışıyorum:
Sayfada yazıyı listelemek için kullandığım repeaterım var. Repater'ın herhangi bir yerinde önceki yazı ve sonraki yazı var. Ben bunlara önceki ve sonraki olacak şekilde nasıl link verebilirim.
Merhaba aşağıdaki kod yardımı ile yapabilirsiniz. Birde PagedDataSource adında bir kontrol var onunlada yapabilirsiniz.
Aşağıdaki kod bana ait değil ama çalışıyor.
<asp:Repeater ID="Repeater1" runat="server" onitemcommand="Repeater1_ItemCommand" onitemdatabound="Repeater1_ItemDataBound">
<ItemTemplate>
<div>
Label: <asp:Label ID="itemLabel" runat="server"></asp:Label><br />
<asp:LinkButton id="lnkPreviousWeek" Enabled="false" runat="server" commandargument="Previous" cssclass="inactive">< Previous week</asp:LinkButton> |
<asp:LinkButton id="lnkNextWeek" Enabled="false" runat="server" commandargument="Next" cssclass="active" >Next week ></asp:LinkButton>
<hr />
</div>
</ItemTemplate>
</asp:Repeater>
private int current = 1;
protected void Page_Load(object sender, EventArgs e)
{
if (ViewState["current"] == null)
ViewState["current"] = current;
else
current = (int)ViewState["current"];
if (!IsPostBack)
{
Repeater1.DataSource = GetData(current);
Repeater1.DataBind();
}
}
private List<int> GetData(int start)
{
//pseudo data; simulates a page of 2 records
List<int> ds = new List<int>();
ds.Add(start);
ds.Add(start + 1);
return ds;
}
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if ((string)e.CommandArgument == "Next")
current++;
else if ((string)e.CommandArgument == "Previous")
current--;
ViewState["current"] = current;
Repeater1.DataSource = GetData(current);
Repeater1.DataBind();
}
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
LinkButton prev = (LinkButton)e.Item.FindControl("lnkPreviousWeek");
LinkButton next = (LinkButton)e.Item.FindControl("lnkNextWeek");
//here 1 and 3 are artificial boundaries for data for the sake of example
if (current > 1)
prev.Enabled = true;
if (current < 3)
next.Enabled = true;
Label label = (Label)e.Item.FindControl("itemLabel");
label.Text = e.Item.DataItem.ToString();
}
ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com
Erdem bey çok teşekkür ederim deneyip çalıştırdım. Next'e ve Prev'e tıklanınca bir artıyor veya azaltıyor. Birer birer arttırırken aradaki ID (konu) silinmişse bulamadığından boş çıkartıyor.
Oraya nasıl bir sql kodu yazabilirim.
Kodun data base baglantılı halını paylasırsanız yardımcı olmaya caloısayım
ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com