건물 호출기 컨트롤에 문제가 있습니다. 내 코드는 동일한 이벤트 핸들러를 사용 LinkButtons의 무리 다음ASP.NET 컨트롤 렌더링 파이프 라인
protected override void CreateChildControls()
{
base.CreateChildControls();
pnl = new Panel { ID = "NewsPager", CssClass = "NewsPager" };
Controls.Add(ddl);
AddPagerControls();
}
AddPagerControls 추가합니다 수 있습니다 :
private void li_Click(object sender, EventArgs e)
{
selectedValue = ((LinkButton) sender).CommandArgument;
AddPagerControls();
}
무엇 이제 어떻게하면 내가 "다음"의 LinkButton을 추가 할 때, 그것은 CommandArgument의 얻을 수 있다는 것입니다 사용하여 올바르게 설정 : 현재 페이지가 2 인 경우의 코드를 디버깅 할 때
이var liNext = new LinkButton {ID = "NewsPagerLinkNext", Text = ">", CommandArgument = (int.Parse(value) + 1).ToString()};
liNext.Click += new EventHandler(li_Click);
pnl.Controls.Add(liNext);
즉, "다음"버튼의 CommandArgument 3이 될 것이다. 그러나 페이지가 렌더링되고 다음 버튼을 클릭하면 페이지 1에서 2로 이동하지만 코드에서는 3으로 설정되어 있어도 항상 2가됩니다. 컨트롤이 렌더링됩니다.
나는 여기서 약간의 손실이 있습니다. CreateChildControls에서 AddPagerControls에 대한 호출을 if (! Page.IsPostBack) {AddPagerControls();}로 변경하려고 시도했지만 이벤트 처리기가 전혀 실행되지 않습니다.
편집 : P.S.I 이벤트 핸들러에서 AddPagerControls 메서드가 호출 될 때 pnl.Controls.Clear()를 수행합니다. 그렇지 않으면 LinkButtons가 두 번 추가됩니다.
편집 : P.P.S. 나는 내가 5 링크를 표시해야하기 때문에 페이지 즉
< <을 < 2 3 4 5 6 7> >>
이미 liNext LinkButton을 항상 가지고 있어도 필요할 때 표시하고 이벤트 처리기에서 CommandArgument 만 설정하면 동일한 링크가 클릭 될 수 있으므로 작업을 중단하면됩니다. 컨트롤은 컨트롤 트리 또는 뭔가 (불가능, 나도 알아 ...) 밖으로 ""작동 중지와 함께 – Colin
당신은 이벤트 처리기가 호출되지 않는다는 것을 의미합니까? – Juri
정확하지는 않지만 이전/다음 링크는 한 번 클릭 한 후에도 계속 가치를 유지할 것이고 동일한 것은 모든 숫자 값에 적용된다는 의미입니다. 호출기는 Sharepoint에서 ObjectDataSource를 사용하는 DataFormWebPart를 페이지하는 데 사용됩니다. 이것이이 컨트롤이 "포괄적"이어야 할 필요가있는 이유입니다. 즉 자체 포함 된 데이터 소스에서 자체를 렌더링합니다. 링크 중 하나를 클릭하면 숫자 링크가 변경되어야한다는 사실에 문제가 있다고 생각합니다. 즉, 컨트롤 트리가 변경되지만 이러한 변경 사항은 페이지에서 렌더링되지 않습니다. – Colin