none
DetailsViewの値の取得 RRS feed

  • 質問

  • みなさん、こんにちは

    DetailsViewを使用して、データを表示させているのですが

    DetailsViewのFooterにボタンを作成し、

    そのイベントで、DetailsViewの指定された項目の値を取得するには

    どうしたら良いのでしょうか?

    2006年5月12日 3:05

回答

  • ご返信ありがとうございます。

    受付1.Text = (CType(FormView1.FindControl("氏名Label"), Label)).Text

    という形で、無事に値の取得が出来ました。

     

    ありがとうございました。

    2006年5月16日 7:59

すべての返信

  • FooterTemplateにボタンを貼り付けて、そのボタンのCommandNameを適当な値にします。
    たとえば"myButtonClick"としておきます。

    DetailsViewのItemCommandイベントから呼び出されるメソッドを作成します。
    そこでDetailsViewの上から3つめに表示されている値を取り出す場合、次のようなコードを記述します。

        protected void DetailsView1_ItemCommand(object sender, DetailsViewCommandEventArgs e)
        {
            if (e.CommandName == "myButtonClick")
                Label1.Text = DetailsView1.Rows[2].Cells[1].Text;
        }

    DetailsViewが挿入や更新モードになっているとき、またはテンプレートフィールドを使っているときは右辺のCellsにはコントロールが含まれる形になると思いますので、適切なコントロールを指定してそこから値を取り出す必要があります。

     

    2006年5月12日 5:03
  • お返事遅れてしまい、すいませんでした。

    おかげで、DetailsViewの値の取得は問題なく出来ました。

    ついでで、申し訳ないのですが

    FormViewの場合はどうしたら良いのでしょうか?

    DetaislViewとは違い、表形式にはなっていないので

    Rows・Cellsでは取得できないですよね?

    どうぞ、よろしくお願いいたします。

    2006年5月15日 10:56
  • まずFormViewをテンプレートの編集の状態にして、取り出したいコントロールの型とIDを確認します。
    取り出したいコントロールの型がLabel、IDが telLabel だった場合、以下のコードで値をLabel1に表示させることができます。

            Label1.Text = ((Label)FormView1.FindControl("telLabel")).Text;

    DetailsViewでもテンプレートフィールドを使っている場合は同じ手順でデータを取り出すことができますね。

    2006年5月15日 13:15
  • ご返答ありがとうございます。

    ですが、VBで作成しているせいか文法がエラーになってしまいました。

    Label1.Text = ((Label)FormView1.FindControl("telLabel")).Text;

    (Label)の部分が「有効な式ではありません」となってしまったので

    Label1.Text = (FormView1.FindControl("氏名Label")).text

    と、書き換えました。

    ですが、最後の「.text」が「メンバではありません」となってしまい

    バインドされたデータを取得することが出来ませんでした。

    2006年5月16日 5:51
  • FormView1.FindControl("氏名Label") はObject型を返すので、これをLabel型にキャストし、そこからTextプロパティの値を取り出してください。
    VBの場合はCType関数を使うのかな?

     

    2006年5月16日 6:30
  • ご返信ありがとうございます。

    受付1.Text = (CType(FormView1.FindControl("氏名Label"), Label)).Text

    という形で、無事に値の取得が出来ました。

     

    ありがとうございました。

    2006年5月16日 7:59