2009-04-07 4 views
0

ASP.Net ListView의 ListViewDataItems를 반복하고 ListView.ExtractItemValues를 사용하여 DataBoundControls에서 값을 가져 오려고합니다. 이 ITextControls 잘 작동하지만 RadioButtonList에서 선택한 항목을 가져 오는 데 문제가 있습니다. 여기 ASP.Net ListView.ExtractItemValues를 사용하여 ListViewDataItem의 RadioButtonList에서 선택한 항목을 얻는 방법은 무엇입니까?

그리고

<asp:ListView ID="lvQuiz" runat="server"> 
<LayoutTemplate> 
<fieldset> 
<ul> 
    <asp:PlaceHolder ID="itemplaceholder" runat="server"></asp:PlaceHolder> 
</ul>  
</fieldset> 
<asp:Button ID="cmdSubmit" runat="server" Text="Submit" OnClick="cmdSubmit_Click" /> 

</LayoutTemplate> 
<ItemTemplate> 
    <li> 
     <fieldset> 
      <legend> 
       <asp:Label ID="lblQuestionText" runat="server" Text='<%# Bind("Question.QuestionText") %>' /> 
      </legend> 
      <asp:RadioButtonList ID="rblResponse" runat="server" DataTextField="ResponseText" DataValueField="Id" 
       DataSource='<%# Bind("Question.PossibleResponses") %>'> 
      </asp:RadioButtonList> 
     </fieldset> 
    </li> 
</ItemTemplate> 
내가 값을 추출하려고 코드입니다 :

var Q = (Quiz)Session["Quiz"]; 

foreach (var item in lvQuiz.Items) 
{     
    var itemValues = new OrderedDictionary(); 
    lvQuiz.ExtractItemValues(itemValues, item, true); 

    var myQuestion = Q.UserResponses.Keys 
     .Where(x => x.QuestionText == itemValues["Question.QuestionText"]) 
     .Single(); 

    Q.UserResponses[myQuestion] = itemValues["Question.PossibleResponses"].SelectedItem 
} 

내 문제가 그 마지막 줄에있다

여기 내 마크 업입니다. "Question.PossibleResponses"는 RadioButtonList에 바인딩되지만 itemValues ​​[ "Question.PossibleResponses"] 값은 내 모든 RadioButtonList 옵션의 목록을 반환합니다. 사용자가 어떤 것을 선택했는지 어떻게 알 수 있습니까?

답변

0

음, Recursive FindControl의 Steve Smith 블로그 게시물에 설명 된대로 재귀 FindControl을 구현하는 Control 확장 메서드를 구현했습니다. Labelable과 ListControl에 대해 신경 쓸 수있는 바인딩 가능한 컨트롤이 두 개 뿐이므로이 방법이 충분히 좋았습니다. UI와 밀접하게 결합되어 있지만, 그 밖의 무엇을 해야할지 모르겠습니다.

관련 문제