2012-02-04 2 views
0

저는 .NET에 익숙하지 않으므로이 문제로 어려움을 겪고 있습니다. 리피터 컨트롤이있는 콘텐츠 페이지가 있습니다. 사전은 Dictionary<string, Dictionary<int,[object]>>입니다. 내가 개체 속성에서 얻을 Repeater 컨트롤 내부의 컨트롤의 값을 원하는 - object.CandName 것, 후보자의 이름, 후보 전화는 것 object.Phone사전이있는 바인딩 리피터 <string, Dictionary <int, [object]>

나는 사전의 이러한 유형의 Eval을 사용하는 방법을 잘 모르겠습니다 . 대부분의 예제는 Eval("Value")을 가리키고 있지만 올바른 값을 제공하지는 않습니다. 친절하게 도와주세요!

<asp:Content ID="Content2" ContentPlaceHolderID="content" Runat="Server"> 
    <div id="rcontent"> 
    <table> 
     <tr> 
     <td> 
      <asp:Label ID="lblerror" runat="server" Text="" Visible="true" CssClass="alert"></asp:Label> 
     </td> 
     </tr> 
    </table> 
    <div id ="rptdiv"> 
     <asp:Repeater ID="Repeater1" runat="server" EnableViewState="false"> 
     <ItemTemplate> 
      <div id="Div3"> 
      <table class="GridViewStyleNoBorder" width=750px cellspacing="0" border="0" > 
       <tr> 
       <td class="PagerStyle" colspan="4"> 
        <asp:Label ID="lblName" Runat="server" 
Text='<%= Need the value of the [object].objectproperty from dictionary here %>' /> 
       </td> 
       </tr> 
      </table> 
      </div> 

이 내 Page_Load 코드 뒤에이다 - BLDecision는 사전과 사전 값이 올바른지 반환 내 비즈니스 레이어 코드입니다. 나는 그들을 디버그 모드로 점검했다.

코드 뒤에 :

Dictionary(int, Dictionary(int, InterviewFeedback)) ; 

CandIntDetails = new Dictionary(int, Dictionary(int, InterviewFeedback))(); 

BLDecision objBLDecision = new BLDecision(); 
int ReqCategoryID = 0; 
if (Request.QueryString["ReqCategoryID"] != null) 
    ReqCategoryID = int.Parse(Request.QueryString["ReqCategoryID"].ToString()); 
CandIntDetails = objBLDecision.GetCandidatesforReqCategory(ReqCategoryID); 

Repeater1.DataSource = CandIntDetails; 
Repeater1.DataBind(); 

내가 코드 숨김에서 사용하는 경우, 나는 aspx 페이지에서 Eval('<% ....%>')을 할 수 있습니까?

미리 도움을 주셔서 감사합니다.

+0

데이터 형식을보다 정확하게 설명해야합니다. 한 지점에서 'Dictionary >'이고 다른 한 단어는 Dictionary >'로 작업하고 있음을 의미합니다. 사전에 정확히 포함 된 것은 무엇이며 출력물을 어떻게 보이게할까요? 사전 키로 그룹화하거나 특정 키의 모든 값에 액세스하고 싶습니까? – Jacob

+0

이것은 : Dictionary (int, Dictionary (int, InterviewFeedback)); 특정 키의 모든 값에 액세스하여 표시하려고합니다. 각 행은 모든 값을 액세스하고 표시해야합니다. –

답변

0

리피터를 하나만 사용하여이를 수행 할 수 없습니다. 당신은 컨테이너 내부 컨테이너를 가지고 있기 때문에, 당신은 리피터 안에 리피터가 필요합니다

<asp:Repeater ID="Repeater1" runat="server" EnableViewState="false"> 
<ItemTemplate> 
<div id="Div3"> 
    <table class="GridViewStyleNoBorder" width=750px cellspacing="0" border="0" > 
    <asp:Repeater ID="Repeater2" runat="server" DataSource='<%# Eval("Value")' > 
     <ItemTemplate> 
    <tr> 
    <td class="PagerStyle" colspan="4"> 
     <asp:Label ID="lblName" Runat="server" 
     Text='<%# Eval("Name") %>' /> 
    </td> 
    </tr> 

     </ItemTemplate> 
    </asp:Repeater> 


    </table> 
    </div> 
</ItemTemplate> 
</asp:Repeater> 
+0

이 제안에 감사드립니다. 다른 Repeater를 추가했으나 Dictionary 값이 Business Object이므로 직접 값에 액세스 할 수 없습니다. 그래서 나는 코드에 대해 이렇게했다. 레코드 값을 표시 할 수 있습니다. 그러나 하나의 레코드 만 표시합니다. 그것은 완전히 3 레코드를 가지고 있지만 첫 번째 행을 표시하지만 나머지는 표시하지 않습니다. 어딘가에 반복해야 하나, 나는 뭔가를 놓친다. –

0

만약 CandIntDetailsDictionary<int, Dictionary<int, InterviewFeedback>>, 당신은 특정 컬렉션 당신이 당신의 리피터의 데이터 소스로 사용하도록에서 추출해야 . 이유는 InterviewFeedback 개체의 컬렉션을 렌더링하려고하기 때문입니다. CandIntDetails이 아니며이 아닙니다. CandIntDetails은 아마 이런 식으로 뭔가 보이는 : 그것은 키가 내부 또는 외부 사전에 대한 어떤 게시물에서 분명하지 않다

{ 
    46: { 
     0: [InterviewFeedback], 
     1: [InterviewFeedback], 
     2: [InterviewFeedback] 
    } 
} 

를, 그래서 이것은 투기입니다. 외부 키는 경우 카테고리 ID, 당신은 내부 사전 키에 대해 걱정하지 않는 경우,이 같은 데이터 소스 추출 할 수 있습니다 (GetCandidatesforReqCategory가 그런 일을 반환 왜 확실하지) :

Repeater1.DataSource = CandIntDetails[ReqCategoryID].Values; 

을 그러면 데이터 소스가 InterviewFeedback 개의 직선 컬렉션이됩니다. 데이터 소스가되면 Eval을 사용하여 InterviewFeedback 개체의 속성에 액세스 할 수 있습니다.

+0

제안 해 주셔서 감사합니다. 이제 작동합니다. –

관련 문제