none
GridView内のRadioButtonListの選択判定と値取り出しについて RRS feed

  • 質問

  • はじめまして、初歩的な質問かもしれませんがご教授お願いします。

    以下環境です。
    システム : Wicrosoft Windows XP SP3
    DB : MicroSoft Access2002
    Webサーバ:IIS

    Microsoft Visual Web Developer 2008 Express Edition
    NET.Framework 3.5
    開発言語 VB
    ASP.NET 2.0

    課題研究でDBから質問をDataGridViewで取り出し、
    それをDataGridViewのテンプレート内のItemTempleteに置いたRadioButtonList(RadioButtonListは項目の設定でValueを打ち込んだだけです)
    から各質問ごとに5段階で評価してもらうプログラムを作成中なのですが、
    題のとおりボタンが選択されているのかの判定、またその選ばれたボタンから値を取り出すことに試行錯誤しています。

    選択されているかの判定は、
    ・選択した質問のボタンからValueを取り出す処理
    ・全質問に回答してもらうためのエラー処理
    として用いているのですが、
    RadioButtonList.SelectedIndex や RadioButtonListItems.Count でインデックスがうまく利用できません。
    (Label.textなどを用いてインデックスを確認したときは -1 が表示されていました。)
    RadioButtonList.Items(インデックス).Selected をif文で判定させたのですが、やはり無理でした。

    お手数ですが、お時間よろしい方よろしくお願いします

    • 編集済み Schofield 2009年8月27日 7:10
    2009年8月27日 6:57

回答

  • 環境に IIS, Visual Web Developer, ASP.NET などとあるので Web アプリケーションの話ですよ
    ね? そうであれば DataGridView ではなくて GridView ではないのですか? その理解でレス
    します。

    RadioButtonList.SelectedIndex を取得するには RadioButtonList を取得する必要がありますが、
    それはどのようにしているのでしょう。RadioButtonList が取得できれば、うまくいかないはずはない
    のですが。

    例えば、Button を配置して、それをクリックしてポストバックし、 Click イベントのハンドラで以下のよ
    うにしてやればうまくいくはずです。

    protected void Button1_Click(object sender, EventArgs e)
    {
        StringBuilder sb = new StringBuilder();
        foreach (GridViewRow row in GridView1.Rows)
        {
            if (row.RowType == DataControlRowType.DataRow)
            {
                RadioButtonList rbl = (RadioButtonList)row.FindControl("RadioButtonList1");
                sb.AppendFormat("番号: {0}, SelectedIndex: {1}, SelectedValue: {2}<br />",
                    row.Cells[0].Text, rbl.SelectedIndex, rbl.SelectedValue);
            }
        }
        Label1.Text = sb.ToString();


    お試しください。

    • 回答としてマーク Schofield 2009年8月28日 3:32
    2009年8月27日 12:34
  • > あと、せっかく書いていただいたコードなのですがいろいろ宣言などのエラーがわからず実行できていません。すいません

    アップしてコードは C# ですが、ひょっとして、それをそのまま VB のソースにコピペしているということはない
    ですか? C# が分からなければ、VB に変換してくれる Web サイトがいろいろありますので、それで変換し
    てみてください。

    例えば下記:

    DeveloperFusion  Convert C# to VB.NET
    http://www.developerfusion.com/tools/convert/csharp-to-vb/


    かなり正確に変換してくれますが、完全ではないので注意してください。

    • 回答としてマーク Schofield 2009年12月8日 7:20
    2009年8月28日 12:10

すべての返信

  • 環境に IIS, Visual Web Developer, ASP.NET などとあるので Web アプリケーションの話ですよ
    ね? そうであれば DataGridView ではなくて GridView ではないのですか? その理解でレス
    します。

    RadioButtonList.SelectedIndex を取得するには RadioButtonList を取得する必要がありますが、
    それはどのようにしているのでしょう。RadioButtonList が取得できれば、うまくいかないはずはない
    のですが。

    例えば、Button を配置して、それをクリックしてポストバックし、 Click イベントのハンドラで以下のよ
    うにしてやればうまくいくはずです。

    protected void Button1_Click(object sender, EventArgs e)
    {
        StringBuilder sb = new StringBuilder();
        foreach (GridViewRow row in GridView1.Rows)
        {
            if (row.RowType == DataControlRowType.DataRow)
            {
                RadioButtonList rbl = (RadioButtonList)row.FindControl("RadioButtonList1");
                sb.AppendFormat("番号: {0}, SelectedIndex: {1}, SelectedValue: {2}<br />",
                    row.Cells[0].Text, rbl.SelectedIndex, rbl.SelectedValue);
            }
        }
        Label1.Text = sb.ToString();


    お試しください。

    • 回答としてマーク Schofield 2009年8月28日 3:32
    2009年8月27日 12:34
  • 回答ありがとうございます。返信送れて申し訳ないです。

    >そうであれば DataGridView ではなくて GridView ではないのですか?

    すみません、GridViewでした。

    >RadioButtonList.SelectedIndex を取得するには RadioButtonList を取得する必要がありますが、
    それはどのようにしているのでしょう。RadioButtonList が取得できれば、うまくいかないはずはない
    のですが。

    おそらくここが間違っているのかもしれません。
    dimで宣言だけしたら、オブジェクト参照できませんとエラーになったのでNewを用いてエラーを消していました。
    VB6.0あたりは少し学習しているのですが、Web Developerは最近はじめたばかりで深く理解まで至っていません


    あと、せっかく書いていただいたコードなのですがいろいろ宣言などのエラーがわからず実行できていません。すいません
    2009年8月28日 3:31
  • > あと、せっかく書いていただいたコードなのですがいろいろ宣言などのエラーがわからず実行できていません。すいません

    アップしてコードは C# ですが、ひょっとして、それをそのまま VB のソースにコピペしているということはない
    ですか? C# が分からなければ、VB に変換してくれる Web サイトがいろいろありますので、それで変換し
    てみてください。

    例えば下記:

    DeveloperFusion  Convert C# to VB.NET
    http://www.developerfusion.com/tools/convert/csharp-to-vb/


    かなり正確に変換してくれますが、完全ではないので注意してください。

    • 回答としてマーク Schofield 2009年12月8日 7:20
    2009年8月28日 12:10