문제

내가 건축하는 호출기 컨트롤에 문제가 있습니다. 내 코드는 다음과 같습니다

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

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

  AddPagerControls();
}

AddPagerControls는 동일한 이벤트 핸들러를 사용하는 LinkButtons를 추가합니다.

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

지금 일어나는 것은 "다음"LinkButton을 추가 할 때 다음을 사용하여 올바르게 지휘관을 설정한다는 것입니다.

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

즉, 현재 페이지가 2 인 경우 코드를 디버깅 할 때 "다음"버튼의 지휘문이 3이됩니다. 그러나 페이지가 렌더링되고 다음 버튼을 클릭하면 한 번 (1 페이지에서 2 페이지에서 2 페이지로 이동)가 작동하지만 코드에서는 3으로 설정 되더라도 항상 2가됩니다. 따라서 제어 할 때 어떤 일이 발생해야합니다. 렌더링됩니다.

나는 여기서 약간의 손실에있다. CreateChildControls의 AddPagerControls 로의 호출을 if (! page.ispostback) {addpagercontrols ();}로 변경하려고 시도했지만 이벤트 핸들러는 전혀 실행되지 않습니다.

편집하다: psi는 addpagercontrols 메소드가 이벤트 핸들러에서 호출되면 pnl.controls.clear ()를 수행합니다. 그렇지 않으면 linkbuttons가 두 번 추가됩니다.

편집 : pps 더 많은 링크 만 표시해야하기 때문에 매번 추가 할 LinkButtons를 다시 표시합니다.

<< < 2 3 4 5 6 7 > >>

도움이 되었습니까?

해결책

내가 이해하지 못하는 것은 항상 페이징 컨트롤을 항상 재생하는 이유입니다. 링크 버튼 "prev"및 "next"가있는 접근 방식을 사용할 수 없으며 컨트롤의 뷰 스테이트에서 (별도의 속성으로)보고있는 현재 페이지와 항목 양 (즉 페이지 크기)?

이벤트 처리기에서는 현재 페이지가 currentPageIndex+1 또는 비슷한 것. 특히 L에서 이전/다음 버튼을 항상 재생i_Click 핸들러는 내 관점에서 좋은 접근 방식이 아니며 이것이 문제를 일으킬 수있는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top