2010-02-26 10 views
6

मैं एक खोज के साथ एक वेबपृष्ठ कर रहा हूं जो एमएसएसक्यूएल से बहुत सारी जानकारी लाता है। मैंने जो किया वह एक संग्रहीत प्रक्रिया है जो वेबसाइट पर केवल पृष्ठ को देखने के लिए लौटाती है।पेजिंग के लिए रिपेटर के अंदर लिंकबटन एएसपी.Net

अभी मैं पेजिंग पर काम कर रहा हूं क्योंकि मुझे Google की तरह कुछ दिखाना है। यदि आप पेज 1 पर हैं तो वे पहले 10 पेज दिखाते हैं और यदि आप पेज 1 पर हैं तो वे पेज 9 से 28 के बाद दिखाते हैं।

मुझे लगता है कि पेज नंबर दिखाने का सबसे अच्छा विकल्प दोहराने के अंदर एक लिंकबटन का उपयोग कर रहा है। अब मेरे पास समस्या यह है कि मुझे पोस्टबैक पर पेज नंबर लेने का सबसे अच्छा तरीका नहीं पता है।

<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. 
      } 

मैं बनाने के लिए क्या करूं है:

एक त्वरित नमूना कर रहा repeater.datasource को एक ArrayList सौंपा यह काम करता हैं?

क्या किसी के पास इस पेजिंग के लिए बेहतर समाधान है?

धन्यवाद

जेरी

उत्तर

0

बस एक विचार है, तो आप एक "डेटा ग्रिड" वस्तु का उपयोग कर एक कॉलम शामिल, किसी आइटम टेम्पलेट बनाने और उसके बाद तत्वों आप के भीतर दोहराने की आवश्यकता में डालने की कोशिश की है टेम्पलेट स्वरूपित। डेटाग्रिड स्वचालित रूप से सही होने पर पेजिंग को स्वचालित रूप से संभालता है ...

+0

ठीक है, एक स्वचालित pagging का उपयोग कर वह यह है कि के साथ समस्या मुझे सभी रजिस्टरों को डीबी से लाने की जरूरत है और इसे तेज़ी से बनाने के लिए मैं जो दिखाना होगा उसे वापस लौटना चाहता हूं;) –

+0

सिर्फ एक विचार ... – DRapp

0

आपने कभी नहीं बताया कि यह आपके पेजिंग का किस प्रकार का नियंत्रण है। यदि आप एएसपी.Net 3.5 का उपयोग कर रहे हैं तो मैं सूची दृश्य नियंत्रण का उपयोग करके और डेटा पेजर नियंत्रण के साथ पेजिंग को संभालने का सुझाव देता हूं।

+0

मैंने जो देखा है वह है कि डेटापैगर को स्वचालित रूप से पेजिंग करने के लिए असाइन किए गए नियंत्रण की आवश्यकता है कि मुझे सभी रजिस्टरों को लाने की ज़रूरत है डीबी और इसे तेज बनाने के लिए मैं बस वापस लौटना चाहता हूं जो दिखाया जाएगा –

9

आप 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 की जरूरत है? एक सादा एचटीएमएल एंकर टैग ठीक काम करता है, और यह कम फज़ है। :)

+0

धन्यवाद श्रीमान! यह बहुत अच्छा काम किया! –

+0

आपका स्वागत है, मदद करने में खुशी हुई। अपने प्रश्नों के लिए एक स्वीकृत उत्तर का चयन करने के लिए मत भूलना। :) –

+0

इस जैकोब के लिए धन्यवाद। जवाब स्वीकार करने के लायक है। –

0

मैं @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(); 

    } 
संबंधित मुद्दे