2009-08-19 15 views
0

ドロップダウンの結果をgridviewで取得するのに問題があり、VBコードの有益な記事が見つかりませんでした。 私がやっていることは、テスト用のサイトを作ることです。これまでのところ、真/偽の回答が選択されるドロップダウンリストのための余分な列と共にグリッドビューが構築されています。テストが完了すると、送信ボタンがあります。私は結果をチェック/グレーディングできるように、変数または配列(各テストには10​​個の質問が含まれています)へのポストバックの各ドロップダウンリストの結果を得ることができることを除いて、すべてがうまくいきます。結果が決定されると、その場所にラベルを表示し、それに応じてテキストの値を変更する(正解または正しくない)ので、これらも同様に列挙できるようにする必要があります(つまり、label1.text = "Correct!" 、label2.text = "Incorrect!"など)。ドロップダウンリストの結果がgridview

これまでのコード。

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataSourceID="SqlDataSource1" BackColor="White" BorderColor="#3366CC" 
      BorderStyle="None" BorderWidth="1px" CellPadding="1"> 
    <RowStyle BackColor="White" ForeColor="#003399" /> 
    <Columns> 
     <asp:BoundField DataField="Question" HeaderText="Question" 
      SortExpression="Question" /> 
     <asp:TemplateField HeaderText="Answer"> 
     <ItemTemplate> 
     <% If Not IsPostBack Then%> 
      <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlAnswer" 
      DataTextField="torf" DataValueField="torf"> 
      </asp:DropDownList> 
      <%Else%> 
      <asp:Label ID="Label1" runat="server" Text=""></asp:Label> 
      <%End If%>  
     </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
    <FooterStyle BackColor="#99CCCC" ForeColor="#003399" /> 
    <PagerStyle BackColor="#99CCCC" ForeColor="#003399" HorizontalAlign="Left" /> 
    <SelectedRowStyle BackColor="#009999" Font-Bold="True" ForeColor="#CCFF99" /> 
    <HeaderStyle BackColor="#003399" Font-Bold="True" ForeColor="#CCCCFF" /> 
</asp:GridView> 

上記のコードでは、10行2列(column1:Question | column2- [DropDownLists]:Answer)が読み込まれます。私はそれが開発になると、新入生ですので、追加情報が必要な場合は私に知らせてください。 Page.IsPostBackに可視属性を結合については(この点に注意してください、私はVB.NETの構文に慣れていないよので、C#である...私は似た何かがうまくいくと確信している)何

答えて

1

にデータを保存するには、私はそれを取り扱う方法ですIsPostBackプロパティはその後、 この回答 薄暗いのための選択された値を取得する「GridView1.Rows にGridViewRowとして各gridRowのために各行 を反復」の場合、T/Fの強く型付けされたリストは、Page.Load

値答えは文字列= CType(gridRow .FindControl( "DropDownList1の")、DropDownListコントロール)がリストにこの答えを追加」 を.SelectedValue Answers.Add(IsCorrectAnswer(答)) 次 エンド

IsCorrectAnswer機能は答えがために与えられたか否かを判断した場合この質問は正しいですし、ブール値を返します。あなたのニーズに合わせてこの関数を書く必要があります。 Button1.Clickハンドラで

「rowCounterは、解答へのインデックスとして機能します 整数= 0 として点心rowCounter GridView1でGridViewRowとして各gridRowについて。行 'grid_RowDataBoundは、単一の行の結合 grid_RowDataBound(gridRow、rowCounter)を処理 rowCounter + = 1 次に

最終的

プライベートサブgrid_RowDataBound(GridViewRow整数としてrowCounterとしてgridRow) ' はドロップダウンが不可視 CType(gridRow.FindControl( "DropDownList1")、DropDownList).Visible = False 'ラベルの2つのプロパティに作用するので、まず変数に変数を入れてアクセスしやすいようにします Dim label As Label = CType(gridRow.FindControl( "Label1")、Label) は 'にラベルを設定 label.Visible = trueを 見える' テキスト label.Text = IIF設定(、回答(rowCounter)を "正しい"、 "不正な")誰かが、おそらくクリーナーを持って

End Subのこれ以上の解決策はありますが、少なくとも私があなたが直面している問題を理解する限り、この作品は知っています。

+0

thaヘルプありがとうございました... –

0

<ItemTemplate> 
    <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlAnswer" 
     DataTextField="torf" DataValueField="torf" Visible='<%# !Page.IsPostBack %/>></asp:DropDownList> 
     <asp:Label ID="Label1" runat="server" Text="" Visible='<%# Page.IsPostBack %/></asp:Label> 
</ItemTemplate> 
+0

幸運にはランタイムエラーに...応答のための –

0

GridviewオブジェクトのRowDataBoundイベントを確認します。 2つのパラメータ: (Byval senderをObjectとして、byval eをGridViewRowEventArgsとして)をとります。これで、各行のラベルの値をポストバックの 'Correct'または 'Incorrect'に設定することができます。

)は、オプションのカップル

1である、ここで、変数への答えを得るために、より多くの情報

ため http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowdatabound.aspx でチェックビューステートを例を参照してください。オーバーヘッドがありますので、慎重にしてください。 がブールの新しいリスト(として プライベート回答)「を作成し、正しい/間違った値の私たちのリストを保持するために、ページレベルのプライベート変数を作成しました: 2)Sessionオブジェクトここ

+0

感謝を行くんが、私はまだ(不足しようとするためではなく)こだわっている 再び...私はasp.netとVBへのnoobです。ネット。データグリッドのcolumn2/cell2にある最初のドロップダウンリストの選択値を取得する方法の例を教えてください。私は提供された記事から必要なものを手に入れることができませんでした。ご協力いただきましてありがとうございます。 –

関連する問題