2009-04-07 25 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のスティーブスミスのブログ記事で概説されているように、再帰的なFindControlを実装するControlの拡張メソッドを実装しました。私が気にしていた2つのバインド可能なコントロール(LabelとListControl)しかなかったので、これで十分な結果が得られました。 UIと密接に結びついていますが、何をすべきかわかりません。

関連する問題