2009-05-15 11 views
2

私は、前のページからの入力に応じて、データベースから取り出された様々な質問をさまざまな数でリストアップしています。私はこのオンラインの例を見つけることができないようです:表示される各質問について、ユーザーがこれらの質問のそれぞれについてyesまたはnoを選択できるように、プログラムでDropDownListを生成する必要があります。ここに誰かを憧れて、どこに向かうべきか私にある方向性を与えることができます。ありがとう。WebControlsをプログラムで生成する

答えて

3

を助けるかもしれないおそらくあなたの最善の策は、単に静的リストの項目とドロップダウンリストが含まれているテンプレートを使用してRepeaterコントロールを使用することです。

<asp:Repeater runat="server" id="questionRepeater"> 
<HeaderTemplate> 
    //some html 
</HeaderTemplate> 
<ItemTemplate> 
<div align=center> 
<asp:Label runat="server"><%# DataBinder.Eval(Container.DataItem,"questionColumn")%></asp:Label> 
<asp:DropDownList runat="server"> 
    <asp:ListItem Text="Yes" Value="1" /> 
    <asp:ListItem text="No" Value="0" /> 
</asp:DropDownList> 
</ItemTemplate> 
</asp:Repeater> 

コードの後ろに、クエリを実行して結果をリピータにバインドすることができます。

private void Page_Load(object sender, System.EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
    SqlConnection db = new SqlConnection("Server=server;UID=uid;PWD=password;Database=whatever"); 
    string sSQL = "Select questionColumn from Questions"; 
    SqlCommand cmd = new SqlCommand(sSQL, conDotNet); 
    db.Open(); 
    SqlDataReader dtrCat = cmd.ExecuteReader(); 
    questionRepeater.DataSource = dtrCat; 
    questionRepeater.DataBind(); 
    } 
} 
2

これは擬似ですが、...

//essentially, run through loop of questions and for each 
//add the question and yes/no stuff.. 
///PlaceHolder is a ContentPlaceholder Control within the .aspx page. 
foreach(inputtype input in this.inputs) 
{ 
    Label lbl = new Label(); 
    lbl.Text = input.Question; 

    DropDownList ddl = new DropDownList(); 
    ddl.ID = input.QuestionID; 
    ddl.DataSource = YesNoDataTable; 
    ddl.DataBind(); 

    this.PlaceHolder.Controls.Add(lbl); 
    this.PlaceHolder.Controls.Add(ddl); 
} 
+0

変更が唯一の事は本当に問題であれば、リピータコントロールに関する噂の提案はおそらくより良いでしょう。しかし、さまざまな応答メカニズムを引き起こした質問の「型」がある場合は、intと言うと、おそらくこのようなものが必要になるでしょう。 – RSolberg

+0

異なる応答メカニズムによって、私はおそらくint、おそらく1つはyes/no、多分1つの色などを一覧表示するものです – RSolberg

+0

ええwompの方法は私の問題にもっと適していますが、私は質問で詳しくは詳しく説明していないので、このメソッドを共有します。私は以前はそれを見たことがなかった。 –

0
Dim tDropDownList As DropDownList = Nothing 
Dim tQuestion As String = String.Empty 

For Each tQuestion In tQuestions 
    tDropDownList = New DropDownList 
    tDropDownList.Name = "someName here" 
    tDropDownList.Items.Add("Yes") 
    tDropDownList.Items.Add("No") 
    Page.Constrols.Add(tDropDownList) 
Next 
関連する問題