2012-01-06 4 views
2

Я пытаюсь реализовать панель подкачки над таблицей. У меня есть статический <ul> элемента на моей странице:Динамически добавленные параметры CommandName LinkButton/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 динамически назначает кнопку, поскольку вы сами не указали идентификатор. Это будет тот идентификатор, который отображается в коллекции Request.Form, если это то, что вы ищете.

Но - я думаю, что ваш подход неверен, если быть честным. Если вы хотите разбиение на страницы, вы должны смотреть на что-то вроде элемента управления GridView или ListView, который имеет разбиение на страницы, встроенное в элемент управления. Это было бы более стандартным, что бы делать. Подкачка GridView объяснила here и общий учебник для ListViews, включая разбиение на страницы here.

Обычно разбиение на страницы - это проблема, которая была решена несколько раз в ASP.Net, и вы действительно не хотели бы изобретать колесо - ну, я бы этого не сделал. Кроме того, используя эти типы элементов управления сеткой, вы получите такие вещи, как сортировка из коробки - другое очень общее требование.