none
GridViewで特定の行にのみ編集ボタンを表示させる方法 RRS feed

  • 質問

  • お世話になります。

    GridViewで、特定の行にのみ編集ボタンを表示させる方法について
    教えてください。

    編集ボタンを追加するには、CommandFieldフィールドを追加して、
    ShowEditButtonプロパティをTrueに設定すればよいのですが、
    次の表の場合、売上と原価が編集ボタンを必要とする入力項目なのに対して、
    原価率は原価を売上で除した値なので
    編集ボタンを表示したくありません。

        1月 2月 3月
    売上   0  0  0
    原価   0  0  0
    原価率  0  0  0

    項目名によって、編集ボタンの表示を制御するには
    どうすればよいのか教えてください。
    よろしくお願いします。

    2007年2月11日 10:18

すべての返信

  • こんにちは。

    RowDataBoundイベントで、条件分岐をしてあげるとよいと思います。
    簡単に書くと下記のような感じでしょうか。

        Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
            Select Case e.Row.RowType
                Case DataControlRowType.DataRow
                    If e.Row.Cells(1).Text = "原価率" Then
                        e.Row.Cells(0).Controls(0).Visible = False
                    End If
            End Select
        End Sub

    2007年2月11日 12:35
  • ご回答、ありがとうございました。

     C#で実行したところ、Visibleをfalseに設定するとCellを表示しないため、その行だけ表の体裁が崩れることがわかりましたのでEnabledを設定することにしました。

         protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                if (e.Row.Cells[1].Text == "原価率")
                {
                    e.Row.Cells[0].Enabled = false;
                }
            }
        }

    おかげさまで、実現したかったページが作成できました。 早々のご回答、大変ありがとうございました。

    2007年2月11日 15:09
  • > Visibleをfalseに設定するとCellを表示しないため、

    Cells[0]のVisibleをfalseにしたのでしょうか?
    この場合は確かにCellを表示しないでしょうね。
    konさんが書かれている通りにCells[0].Controls[0]のVisibleをfalseにすればよいのでは?

    2007年2月12日 15:06
  • 大変失礼しました。 次のコードで編集ボタンが消せることを確認しました。 ありがとうございました。

        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
                if (e.Row.Cells[1].Text == "原価率")
                    e.Row.Cells[0].Controls[0].Visible = false;

        }

    2007年2月13日 13:33