2012-01-06 104 views
2

我試圖在表格上方實施分頁欄。我有一個靜態<ul>元素我的網頁上:動態添加要刪除的LinkBut​​ton CommandName/CommandArgument設置

<div><center><ul id="topnav" runat="server"></ul></center></div> 

在我的Page_Load事件中,我試圖用頁碼來加載它:

foreach (int linkpage in linkpages) { 
    HtmlGenericControl li; 
    LinkButton pbut; 
    li = new HtmlGenericControl("li"); 
    pbut = new LinkButton(); 
    pbut.CommandName = "page"; 
    pbut.CommandArgument = linkpage.ToString(); 
    pbut.Text = linkpage.ToString(); 
    li.Controls.Add(pbut); 
    topnav.Controls.Add(li); 
} 

然而,當控制實際呈現其職位姓名'ctlXX'(其中XX是遞增數字)並且沒有參數,所以我無法獲取頁碼。但.Text屬性呈現良好。我究竟做錯了什麼?這完全是錯誤的方法嗎?

回答

1

如果您正在動態添加按鈕,則需要在Page_Init方法中執行此操作,否則控件將不參與ViewState。這可能是問題。當然,它不會幫助。

此外,名稱是.Net動態分配給按鈕,因爲您沒有自己指定ID。如果您正在查看的是這個ID,那麼在Request.Form集合中可以看到該ID。

但是 - 我認爲你的做法是錯誤的說實話。如果你想要分頁,那麼你應該看看像GridView或ListView控件那樣的內置分頁的控件。這將是更爲標準的做事。 GridView分頁解釋here和ListView的一般教程,包括分頁here

通常分頁是一個問題,已經在ASP.Net中解決了很多次,你真的不想重新發明輪子 - 我不會。同樣,通過使用這些類型的網格控件,您將獲得諸如從盒子中分揀出來的東西 - 另一個非常常見的要求。

相關問題