Domanda

Ho un problema con un controllo cercapersone che sto costruendo. Il mio codice è il seguente

protected override void CreateChildControls()
{
  base.CreateChildControls();

  pnl = new Panel { ID = "NewsPager", CssClass = "NewsPager" };
  Controls.Add(ddl);

  AddPagerControls();
}

AddPagerControls aggiunge una serie di LinkButtons che utilizzano lo stesso gestore di eventi:

private void li_Click(object sender, EventArgs e)
{
  selectedValue = ((LinkButton) sender).CommandArgument;
  AddPagerControls();
}

Quello che succede ora è che quando aggiungo il " Next " LinkButton, ottiene CommandArgument impostato correttamente usando:

var liNext = new LinkButton {ID = "NewsPagerLinkNext", Text = ">", CommandArgument = (int.Parse(value) + 1).ToString()};
liNext.Click += new EventHandler(li_Click);
pnl.Controls.Add(liNext);

vale a dire. se la pagina corrente è 2, allora il " Successivo " il CommandArgument di button sarà 3 durante il debug del codice. Tuttavia, quando la pagina è stata renderizzata e faccio clic sul pulsante successivo, funzionerà una volta (passando da pagina 1 a 2) ma sarà sempre 2, anche se nel codice è impostato su 3. Quindi qualcosa deve accadere quando il controllo è reso.

Sono un po 'perplesso qui. Ho provato a cambiare la chiamata a AddPagerControls in CreateChildControls in if (! Page.IsPostBack) {AddPagerControls ();} ma poi il gestore eventi non si attiva affatto.

Modifica: P.S.Faccio un pnl.Controls.Clear () quando il metodo AddPagerControls viene chiamato dal gestore eventi, altrimenti i LinkButtons verrebbero aggiunti due volte.

Modifica: P.P.S. Ricolulo i pulsanti di collegamento da aggiungere ogni volta perché devo mostrare solo 5 collegamenti se esistono più pagine, ad esempio

lt &; Lt &; lt &; 2 3 4 5 6 7 & Gt; gt &; gt &;

È stato utile?

Soluzione

Quello che non capisco è il motivo per cui si rigenerano continuamente i controlli di paging. Non potresti semplicemente usare un approccio in cui hai i tuoi pulsanti di collegamento & Quot; prev & Quot; e " successivo " e mantieni nella visualizzazione del tuo controllo (come proprietà separate) la pagina corrente che viene visualizzata e la quantità di elementi (cioè le dimensioni della pagina)?

Nel gestore dell'evento esegui quindi le azioni appropriate poiché sai che la tua pagina corrente sarà qualcosa come currentPageIndex+1 o qualcosa di simile. Rigenerare i pulsanti prev / next in ogni momento, specialmente nel gestore l i_Click non è un buon approccio dal mio punto di vista e questo è anche ciò che può causare i tuoi problemi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top