2009-09-15 4 views
1

나는 이전에 이것을 달성했지만, 내가 어떻게했는지 기억하지 못한다.다중 ASP : 리피터 데이터 바인딩

구조와 데이터 바인딩 이벤트가 동일하기 때문에 페이지에서 두 번 사용하려는 리피터가 있지만 리피터에 대한 데이터 바인딩은 분명히 다릅니다. 과거

그래서 효과적으로 그때 databinded 리피터에 데이터 소스를 설정 한 다음 한 같은 다시하지만 다른 데이터 소스로 생각 :

MyRepeater.DataSource = DataSourceOne; 
MyRepeater.DataBind(); 
MyRepeater.DataSource = DataSourceTwo; 
MyRepeater.DataBind(); 

지금이이 두 번 HTML을 생산 것 페이지. 이 예에서는 두 개의 목록이 있으며 서로 다른 데이터가 포함되어 있습니다.

생각해 보면, 아마도 유형 데이터 소스를 사용할 수 있습니다. 데이터 세트/테이블일지도 모르기 전에 리피터에 바인딩하고 있었지만 이번에는 ArrayList를 사용하고 있습니다.

ArrayList Items = new ArrayList(); 
Items = this.GetMenu(this._ProductsPageID); 
this.rep_ProductsPortfolio.ItemDataBound += new RepeaterItemEventHandler(ProdPortItemDataBound); 
this.rep_ProductsPortfolio.DataSource = Items; 
this.rep_ProductsPortfolio.DataBind(); 

// Get portfolio 
Items = this.GetMenu(this._PortfolioPageID); 
this.rep_ProductsPortfolio.ItemDataBound += new RepeaterItemEventHandler(ProdPortItemDataBound); 
this.rep_ProductsPortfolio.DataSource = Items; 
this.rep_ProductsPortfolio.DataBind(); 

각 중계기마다 다른 ArrayList를 사용해 보았지만 그 중 하나는 작동하지 않았습니다.

현재 두 번째 databind가 이전 리피터에 리 바인드되며 페이지에 하나만 있습니다.

아이디어가 있으십니까? 미리 감사드립니다.

답변

2

데이터 소스를 변경하면 첫 번째 데이터가 삭제됩니다. 제 아이디어는 두 개의 리피터를 사용하는 것입니다.

+0

여기 내 질문에 중첩 된 리피터를 사용할 수 있습니까? http://stackoverflow.com/questions/31255119/how-to-populate-two-separate-repeaters-with-distinct-column-name-and- the-value-c – SearchForKnowledge

1

데이터 세트/테이블에 대해서는 잘 모르겠지만, 항상 리피터의 DataSource로 ArrayLists를 사용했으며 복제되지 않았습니다.

하지만) =를 "추가"데이터 소스 참조를 대체되지 않으며, 설정,

어쨌든 HTML 코드 = O에서 두 테이블을 생성 한 Repeater의 사실을 unresonable 보인다

편집 :

Repeater.DataSource 재산권 : MSDN 문서에서

가져 오거나 목록을 채우는 데이터를 제공하는 데이터 소스를 설정합니다.

3

과거에는 하나의 데이터 소스에 2 개의 리피터를 사용하지 않았습니까?

여기서 두 개의 중계기를 사용해야한다고 생각합니다.

+0

아니요, 다른 데이터 소스였습니다 :) –

+0

... 그렇다면 당신이 버그를 유발했거나, 의문의 여지가없는 정의되지 않은 행동이 의심됩니다. – wefwfwefwe

0

이미 언급 한 것처럼, 첫 번째 databind의 출력을 덮어 쓰게됩니다.

하지만 당신은 그들에게 나는 (심지어 한 경우에!) 전에 그것을 어떻게 모든 사람이, 내가 알아낼 수 없습니다

var allItems = new List<Foo>(); 
allItems.AddRange(fooDataSource1); 
allItems.AddRange(fooDataSource2); 
repeater1.Datsource = allItems; 
repeater1.Databind(); 
+0

좋은 생각이지만 각 데이터 소스에 대해 UL 클래스를 변경했기 때문에 슬프게도 하나의 큰 데이터 세트를 바인딩 할 수 없습니다. –

2

감사 데이터 바인딩하기 전에 목록을 결합 할 수는 시간이 질문을 만드는 낭비 이제이 문제에 대한 해결책은 솔루션의 10 배입니다.

결국 바인딩 이벤트가 처리되는 하나의 데이터 소스로 모든 작업을 처리했으며 변경되는 유일한 데이터는 바인딩 된 데이터이므로 단순히 리피터를 복사하고 이름을 바꾸고 다른 데이터 소스에 연결했습니다. 새로운 중계기와에 두 개의 중계기한 바인딩 이벤트 핸들러를 사용, 짧은에서

는 할 수 없습니다 하하 ... 전체 1 분 복용, 데이터 바인딩 이벤트를 다시 사용

어쨌든 모두 감사합니다! :)

관련 문제