DataPager コントロールを備えた ListView があります。一連の質問を表示しようとしています。各質問とその選択肢は、リストビューの項目に属しており、ページごとに 1 つの質問を表示しています。選択肢は、自動ポストバックが有効になっているラジオ ボタンです。ここで、最初の質問に対するユーザーの回答に基づいて、リストビュー内の残りの質問をフィルター処理して、ユーザーの選択に関連する質問のみを表示します。また、リストビューから他の質問を完全に削除したくありません。ユーザーが最初の質問に移動して応答を変更した場合、それに応じてリストを変更したいからです。無関係な質問を含むページを動的に非表示にする方法はありますか?
ありがとう。
注: リスト アイテムは、カスタム SQL クエリによって入力されます。
SELECT questionNumber,questionText,OptionA,OptionB,OptionC,OptionD,OptionE,OptionF,OptionG,OptionH,OptionI,OptionJ,OptionK,OptionL,Other,questionTag,subType from Questionairre
このクエリでは、フィールド「subType」にある値を、最初の質問で選択した値と比較する必要があります。最初の質問のサブタイプ フィールドはチェックされません。次のコードは、私がこれまでに持っているものです。変数「firstChoice」は、最初の質問からポストバックされた値を格納する静的変数です。
protected void ListView_ItemDataBound(object sender, ListViewItemEventArgs e)
{
SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
ListViewDataItem di = (ListViewDataItem)e.Item;
Label q=new Label();
foreach(Control control in di.Controls)
{
if (control.GetType() == typeof(Label))
{
q = (Label)control;
if (q.ID == "subType" && q.Text != firstChoice)
{
di.Visible = false;
}
}
}
}