• 締切済み

CommandFieldでの行毎表示切り替え

ASP.NET(C#)を初めて使う者です。 GridViewにDBのデータをバインドし、先頭カラムをCommandFieldにして[削除]ボタンをつけています。 (<asp:CommandField ShowDeleteButton="True" />) DBからバインドした、別のあるカラムの値によって、この[削除]ボタンの表示/非表示を切り替えたいと思っています。いろいろ調べてみましたがやり方がわかりませんでした。 そもそも、CommandFieldで行毎に表示/非表示を切り替えることは可能なのでしょうか。

みんなの回答

  • onos
  • ベストアンサー率81% (127/155)
回答No.1

CommandField のままだと無理だと思います。 TemplateField に変換したうえで、カスタムバインドを使う、とかしましょう。 http://wp.me/p1iei3-1K

関連するQ&A

  • GridViewに行追加するには?

    ObjectDataSourceをGridViewにバインドしてGridViewを表示しています。GridViewは1画面に20行固定で表示したいのですが、表示するデータが20行に満たない場合でも空白行を追加して、20行表示にしたい。空白行を追加するにはどうすればよろしいでしょうか? GridView1.Controls[0].Controls.AddAt(INDEX,GridViewRow)で追加できそうなのですが、GridViewRowの作成方法がわかりません。 よろしくおねがいします。

  • ASP.NET GridView 一致した行のみ表示

    ASP.NET .NETはver3.5を使用 GridViewにDBのテーブルを反映させることは出来るのですが、そこから特定の行を絞って表示させる方法がわかりません。 例えば名前という列が存在する場合、名前が「佐藤」の行のみ表示させる方法です。 どのようにすればよろしいでしょうか。

  • gridViewの行選択解除

    gridViewの行選択解除 windowsのvb.netでgridviewを使用しております。 ページを読み込んだ際にgridViewにデータを表示するのですが gridViewの先頭行が選択状態のまま表示されてしまいます。 未選択状態にすることは可能なのでしょうか? お分かりになる方がいらしゃいましたらよろしくお願い致します。

  • GridViewの項目編集(初歩)

    いわゆるレガシー言語専門の技術者です。 事情があって、ASP.NETとVisualStudio2008(C#)でWebアプリを知人から頼まれて作っています。 クライアント/サーバ型のシステム開発歴は長いのですが、Web系は全くと言って良いほど経験がありません(個人商店のホームページを作ったくらいです)。 要件は以下のようになります。 検索条件を入力 →DBのマスタ検索 →対象データをGridViewに一覧表示 →項目を直接編集  ※解説サイトによくある、GridViewにボタンが配置してあって、ボタン押下で編集モードに移行する動きはNGです。あくまでも直接編集できなければいけません。 →入力後、更新ボタン押下により、画面情報でDB一括更新 この、GridViewの項目を直接編集するには、何というコントロールを使い、データベースと連動させるにはどうすれば良いのかが、さっぱりわかりません。 自力で頑張ってみたのですが、DBの値をGridViewに表示するには、asp:BoundField を使い、DataField にDBの項目名を指定すれば「表示」はされるところまでは確認できました。 ただ、これだと「編集」が出来ない...どうやら、asp:TemplateField というものを使うようだが、DBとバインドさせる方法は?編集可能にするには? ネットで色々と調べたのですが、(理解力が低いせいもあり)そのものズバリな表現で説明しているサイトは殆どなく、頭がパニックで力が尽きてしまいそうです。 私はWeb開発には向いていないのかも知れませんが、諸事情により、今回は何としてもやり遂げないといけません。 どなたか助けてください、よろしくお願いします。

  • GridViewにバインドせずにデータを表示する方法

    環境:VS2008&VB.NET&ASP GridViewに手動でテーブルからデータを読みデータバインドせず DBの値を表示する方法を考えていますがうまくいかず困っています。 (データバインドしたくない理由はデータバインドを行っていると行の挿入や移動ができない認識のためです。) 初心者のため見当違いなことをしているかもしれませんが それも含めまして質問させていただきます。 質問1 そもそもGridViewでデータバインドせずに手動でデータを表示することは可能でしょうか。 質問2 以下のコードで試しましたが「GridView1.Controls(0).Controls.Add(row1)」でExeptionが発生してしまいました。 手順に不適格な箇所があるのでしょうか。 strSql = "SELECT * FROM Data_Table" Using connection As New SqlClient.SqlConnection(cnStr) Dim command As New SqlClient.SqlCommand(strSql, connection) connection.Open() Dim dr As SqlClient.SqlDataReader = command.ExecuteReader While (dr.Read = True) 'データあり str1 = dr("data1") str2 = dr("data2") str3 = dr("data3") End If connection.Close() Dim item1 As DataGridItem item1 = New DataGridItem(-1, -1, ListItemType.Item) Dim cell0 As TableCell = New TableCell item1.Cells.Add(cell0) Dim cell1 As TableCell = New TableCell item1.Cells.Add(cell1) Dim cell2 As TableCell = New TableCell item1.Cells.Add(cell2) Dim row1 As New GridViewRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal) row1.Cells.Add(cell0) row1.Cells.Add(cell1) row1.Cells.Add(cell2) GridView1.Controls(0).Controls.Add(row1) End While End Using エラーの内容 System.ArgumentOutOfRangeException はユーザー コードによってハンドルされませんでした。 Message="指定された引数は、有効な値の範囲内にありません。 パラメータ名: index" お力添えをよろしくお願い致します。

  • 行をクリアした後、下の行がクリア行を埋めるには

    シート名wsFormと言う入力フォームで入力した値を保存するマクロボタンを押すと、シート名wsDataと言うシートの先頭行を抜かした2行目(A列からF列まで)から順番に3行目、4行目と順に保存されるようにしています。 誤って保存した場合、wsDataを開いている状態で下記マクロを実行すると、選択行がクリアされます。 その後で、空白行の下にあるデータの入った行をすべて1行上にあげて空白行をうめるマクロはどうすれば可能でしょうか。 先頭行にはsubtotal関数が入っているので行を削除するマクロだとsubutotalの選択範囲が削除した分減ってしまうため、行削除は避けたいと考えています。 wsDataは1年毎にデータの入った行全体をクリアして使う予定です。1年間でデータが入る行数は1000行程度ですが、念のため2000行として数字の入る各列の先頭行には、例として=Subtotal(109,B2:B2000)が入っています。 よろしくお願いいたします。 Sub 行クリア() Dim rc As Integer rc = MsgBox("【重要】選択行データを本当に削除しますか?", vbYesNo + vbQuestion, "選択行削除") If rc = vbYes Then MsgBox "削除を実行します。" ActiveSheet.Unprotect Rows(ActiveCell.Row).Clear ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowFiltering:=True Else MsgBox "処理は中断されました" End If End Sub

  • ASPとavascript

    はじめましてこんにちわ。 ただいまasp.net(vb)で開発をしております。 gridviewにバインドしています。 そこに新たにtextbox,LBLをいれています。 textboxに値が入力されたらjavascript(クライアント側)にてバインドした値*textboxをLBLにjavascriptを使って表示したいのですが方法がわかりません。 どなたか教えていただけないでしょうか??

  • SQLで行番号を表示する方法

    OracleのDBにSQL Plusで接続して、結果を表示します。 このとき、選択された行に1、2、3と番号を振る方法を教えてください。 Select ???, column1, column2 from table_name; ↑このSQLで、???の部分に何かを指定すると、↓こんな結果が出たと思います。 ??? column1 colmun2 ------------------------- 1 data11 data21 2 data12 data22 3 data13 data23 : : : このようにする方法があったと思うんですが、調べても見つかりませんでした。 ご存知の方がいたら教えてください。

  • ASP.NET GridView につきまして

    ASP.NET GridView につきまして質問があります。 よろしくお願いいたします。 SQL Server にあるデータを使用して、GridView を作成しております。 あるBit型フィールドがあるのですが、NULLの場合は 無、1の場合には 有 と GridView内に表示させたいのですが、GridViewの項目はバインドされているフィールドしか表示させることができないのでしょうか? 非連結の項目を追加して どこかのプロパティに =IIf([CheckChoku]=True,"有","無") を記述すれば、表示できるような方法を探しています。 すみません ASP.Net は始めたばかりなので、VB や Access のような操作が応用できればなと思っております。もしくは SQL のデータソースを作成するときに上記を埋め込んでソースにしないと実現できないものでしょうか? ご教授いただければ 大変助かります。 よろしくお願いいたします。

  • VB6.0 ListViewの一行目を表示しないようにするには?

    VB6.0 ListViewの一行目を表示しないようにするには? こんにちは。 環境WinXP,VB6.0です。 リストビューを表示する際に、一行目を表示させたくないのですが、 どのように書けばいいのでしょうか? DBの値をリストビューに表示しているのですが、テストで入れたデータが表示されてしまいます。 かといって、このテストデータが重要な役割をしているので、消したくありません。 このテストデータは、常に一行目に表示されるので、リストビュー表示の際に一行目だけ消して表示したいです。 何か良い方法があればご教授下さい。

専門家に質問してみよう