2012-10-22 76 views
1

我正嘗試使用自定義分頁創建GridView。我有非常大的數據,所以爲了提高十倍速度,我正在嘗試自定義尋呼。使用存儲過程在ASP Gridview中自定義分頁

我寫了一個SQL Server存儲過程,該過程使用輸入參數SelectedPageNumber,SelectedPageSize並給出了填充屬於特定頁面的結果行的DataTable。存儲過程還具有MaxPageNumber作爲輸出參數。

我能夠將頁面的數據綁定到GridView,但我無法弄清楚如何顯示頁面號碼作爲存儲過程的MaxPageNumber值。

我使用.NET Framework 4.0

這可能是重複的,但我無法找到解決方案。

你能幫我嗎?

+0

如果是,那麼我想這將是更好地使用像'Repeater'打火機控制,而不是GridView控件的'執行自定義分頁尋呼機',當然你也必須渲染一個自定義尋呼機。 – yogi

+0

如果你想顯示頁碼/ MaxPageNumber,那麼你可以使用Label控件。 –

回答

4

您可以創建使用Repeater控制,像這樣

// These are your outputs from that SP 
int MaxPageNumber = 10, 
    CurrentPageNumber = 4; 

void BindPager() 
{ 
    DataTable PagerData = new DataTable(); 
    PagerData.Columns.Add("pageNo"); 
    for (int i = 1; i < MaxPageNumber; i++) 
     PagerData.Rows.Add(i); 
    pager.DataSource = PagerData; 
    pager.DataBind(); 
} 

<asp:Repeater runat="server" ID="pager" onitemcommand="pager_ItemCommand" 
     onitemdatabound="pager_ItemDataBound"> 
    <ItemTemplate> 
     <asp:Button runat="server" ID="pageNo" 
        Text='<%# Eval("pageNo") %>' 
        CommandArgument='<%# Eval("pageNo") %>' 
        CommandName="DoPaging" /> 
    </ItemTemplate> 
</asp:Repeater> 


protected void pager_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    // Code to highlight current page 
    if (e.Item.ItemType == ListItemType.Item || 
     e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
    Button pageNo = e.Item.FindControl("pageNo") as Button; 
    if (pageNo == null) return; 
    if (pageNo.Text == CurrentPageNumber.ToString()) 
     pageNo.BackColor = Color.Blue; 
    else 
     pageNo.BackColor = Color.Gray; 
    } 
} 

protected void pager_ItemCommand(object source, RepeaterCommandEventArgs e) 
{ 
    // perform your paging here according to page number 
} 
0

要顯示頁碼,您可以創建從MinPageNumber到MaxPageNumber的整數列表,將列表綁定到Repeater-Control作爲DataSource,並讓Repeater顯示每個頁碼。根據當前頁碼,您可能需要重新創建該列表。

0

如果您正在使用自定義分頁,那麼您必須創建一個自定義頁面控件來顯示頁碼。您可以將自定義尋呼機放置在gridview下方,並在頁碼上重新點擊網格上的點擊事件。