Pregunta

Tengo un problema con un control de buscapersonas que estoy construyendo. Mi código es el siguiente

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

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

  AddPagerControls();
}

AddPagerControls agrega un grupo de LinkButtons que usan el mismo controlador de eventos:

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

Lo que sucede ahora es que cuando agrego " Siguiente " LinkButton, obtiene su CommandArgument configurado correctamente usando:

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

es decir si la página actual es 2, entonces " Siguiente " CommandArgument del botón será 3 al depurar el código. Sin embargo, cuando la página se ha procesado y hago clic en el botón siguiente, funcionará una vez (pasando de la página 1 a la 2), pero siempre será 2, aunque en el código esté configurado en 3. Entonces algo debe suceder cuando el control se procesa.

Estoy un poco perdido aquí. Intenté cambiar la llamada a AddPagerControls en CreateChildControls a if (! Page.IsPostBack) {AddPagerControls ();} pero luego el controlador de eventos no se activará en absoluto.

Editar: P.S.hago un pnl.Controls.Clear () cuando se llama al método AddPagerControls desde el controlador de eventos; de lo contrario, los LinkButtons se agregarían dos veces.

Editar: P.P.S. recalculo qué botones de enlace agregar cada vez porque necesito mostrar solo 5 enlaces si existen más de páginas, es decir,

< < < 2 3 4 5 6 7 & Gt; > >

¿Fue útil?

Solución

Lo que no entiendo es por qué regeneras tus controles de paginación todo el tiempo. ¿No podría usar un enfoque en el que tiene sus botones de enlace & Quot; prev & Quot; y " siguiente " ¿y mantiene en el estado de vista de su control (como propiedades separadas) la página actual que se está viendo y la cantidad de elementos (es decir, el tamaño de página)?

En el controlador de eventos, luego realiza las acciones adecuadas, ya que sabe que su página actual será algo así como currentPageIndex+1 o algo similar. Regenerar los botones anterior / siguiente todo el tiempo, especialmente en el controlador l i_Click no es un buen enfoque desde mi punto de vista y esto también es lo que puede causar sus problemas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top