ASP.NetのGridViewで選択を行う方法

このQ&Aのポイント
  • ASP.NetのGridViewコントロールで、任意の行をクリックして選択する方法を解説します。
  • DataGridコントロールでは実装できる方法があるが、GridViewコントロールでは発生するエラーについても考慮する必要があります。
  • 選択ボタンを非表示にして、グリッド行内の任意の場所をクリックして行を選択する方法を調べています。
回答を見る
  • ベストアンサー

ASP.NetのGridViewで任意の行クリックで選択を行う方法

ASP.NetのGridViewコントロールで、「選択」ボタンを表示せずに、グリッド行内の任意の場所をクリックすることでその行を選択する方法がわかりません。 DataGridコントロールについての実装方法はみつけたのですが(下記URL)、同じようにGridViewコントロールで実装すると「無効なポストバックまたはコールバック引数です」というサーバーエラーが発生してしまいます。 どなたか実装する方法についてご存知の方いらっしゃいましたら宜しくお願いします。 http://www.microsoft.com/japan/msdn/vs/WebApplication/vbtchTopQuestionsAboutASPNETDataGridServerControl.aspx#vbtchtopquestionsaboutaspnetdatagridservercontrolselectingrows

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

選択ボタンの列を 非表示にしていませんか? 非表示にするとコントロール自体を作成しなかったと思います そのため例外が発生してしまうのではないかと思います 選択ボタンの テキストプロパティを無しにしてみてはいかがでしょう

rock55
質問者

お礼

ご回答ありがとございます! ご指摘の通り、選択ボタン列を非表示にしていました。 選択ボタンのテキストプロパティを無しにしたら、列は表示されますが、ボタンは非表示となりました。 列も非表示にしたいとこですが、これでいけそうです。ありがとうございました!

関連するQ&A

  • GridViewにて行全体を選択する方法

    はじめまして、ASP.NETの初心者です。 環境は、Windows XP、ASP.netでVBを利用しています。 質問は、 GridViewコントローラを使用して、「選択」ボタンを 表示させず、行全体を選択できるようにしたいのです。 以前、同じような質問がされているのを見つけて 参考URL↓を見たのですが、いまだに解決できません。 http://www.microsoft.com/japan/msdn/vs/WebApplication/vbtchTopQuestionsAboutASPNETDataGridServerControl.aspx#vbtchtopquestionsaboutaspnetdatagridservercontrolselectingrows この参考のサイトでは「DataGrid」を利用していますが、 「GridView」ではどのようにコーディングしたらよいのでしょうか? お手数ですが、ヒントをいただけないでしょうか? よろしくお願いいたします。

  • GridViewの行の入れ替えについて

    VS2005 ASP.NET GridViewの列を動的に並び替える方法をさがしています. 具体的にはpage_load関数内で 別のファイルやユーザの設定した コントロールの値などから 表示する列を並びを入れ替えたいと思っています. 列のたいとるや数は変わりません。 お力添えをお願いいたします

  • ASP.NET2.0 GridViewのページャー設定について

    お世話になります。 現在VS2005のASP.NETを学習しております。 GridViewコントロールのページャー設定について質問があります。 500レコード程のデータを1ページに10件ずつ表示しようと思い、 GridViewコントロールのPagerSettingsプロパティのVisibleをTrueに設定しました。 それだけでテーブル下にページ番号リンクが表示され、とても簡単で感動しました。 その後、同じくPagerSettingsプロパティのModeをNumericからNextPreviousに変更するなど、いろいろ試していました。 そこで気づいたのですが、そのモードの中にFirstLastとNumericが一緒になったものはあるのですが、 NextPreviousとNumericが一緒になったモードがありません。 冷静に考えると現在のページ番号の両隣のリンクを押せばいいだけなのですが、 頑固な方がどうしてもページ番号と前へ・次へボタンを一緒にしてくれと頼まれた場合、 そのようにカスタマイズすることは可能なのでしょうか? また可能な場合、どのようにすれば実現できるのでしょうか? 知っている方がいたら、どうぞ宜しくお願いします。

  • ASP GridViewで1レコード2行を1かたまりとして表示する。

    VS2005 C#にてASP WEBアプリを開発しております。 GridViewにて1レコードを2行単位で該当件数分表示したい。 その方法をご存知の方、ご教授頂けませんか? ============================================== ヘッダーヘッダーヘッダーヘッダーヘッダー ============================================== データ1 データ3 データ5 ---------------------------------------------- データ2 データ4 データ6 ============================================== データ1~6までを1単位として 該当件数分出力したい。

  • ASP.NET、GridViewコントロールの各コマンドについて。

    開発環境:MS VisualStudio 2008 MS SQLserver 2005 ASP.NETで出退勤管理システムの開発をしております。 GridViewコントロールの編集ボタンについて質問です。 GridViewコントロールの編集ボタンを利用するには、 aspxファイルのデータソースのところにUPDATEコマンドを設定するかと思うのですが、 Updatecommand="Update [timecard] Set" + "[DATE]=@DATE" + ",[SYUKKIN]=@SYUKKIN" + ",[TAIKIN]=@TAIKIN" + ",[REST]=@REST" + ",[ZITUDOU]=@ZITUDOU" + ",[S_BIKOU]=@S_BIKOU" + ",[T_BIKOU]=@T_BIKOU" + ",[SUBMIT_DATE]=@SUBMIT_DATE" + ", [AMEND_DATE]= <%$DateTime.Now.ToShortDateString %>" //←これ + " ,[ADMIT]=@ADMIT " + "where [NAME]=@NAME" こんな風にAMEND_DATEには毎回、編集した時間を入れていきたいのです。 …が、実行時に「'<' 付近に不適切な構文があります」と怒られてしまいます。 <%$ ~~ %>があやしいんじゃないかなというのは思うのですが、自分ではわかりません。。 どなたかわかる方いらっしゃいましたらお教えください。 よろしくお願いします! 説明不足でしたら補足しますので、おっしゃってください。

  • ASP.NETバージョンの不一致

     はじめまして。  下記環境下で、新規にプロジェクトを作成しようとしたんですが、 -------------------------------------------------  ASP.NETバージョンの不一致   サーバー上のASP.NETを最新バージョンにアップグレードするか、Ver.1.0に準拠させるか -------------------------------------------------  というように、実行する操作を選択する画面が表示されます。 1.アップグレードをしたいんですが、その方法がわ  かりません。  しょうがないので、準拠を選択したところ、 -------------------------------------------------  Webアクセス失敗    このプロジェクトの既定のWebアクセスモードはファイルの共有に設定されていますが・・・ ・・・ファイルパス'c:\inetpub\wwwroot\WebApplication1'がURL'http://localhost/WebApplication1'と一致しません。これらは同じサーバーの場所に割り当てる必要があります。HTTPエラー404:Not Found  「別のファイル共有パスを使用して再試行」 もしくは、「FrontPage Server Extensionsを使用してプロジェクトを開く」 -------------------------------------------------  と表示されます。おそらくIISの設定を変える必要があるのでは?と勝手に思っていますが、 2.解消方法をご教授ください。  以上、2点、よろしくお願いします。 --------------------------------------------- 使用環境は、  Windows2000 VB.NET(VS.NET2003) MSDE ver.8.0 です。

  • ASP.NETでWebユーザーコントロールを作成していますが、あるユー

    ASP.NETでWebユーザーコントロールを作成していますが、あるユーザーコントロールを拡張して別のユーザーコントロールを作成したいと思っています。 Webカスタムコントロールであれば、クラスの継承の概念を使って派生クラスを作成し、追加したいコントロールやフィールドを派生クラスで追加するのですが、ユーザーコントロールでこれと同じ事はできないものでしょうか? Visual Studio 2005環境ですが、Webカスタムコントロールはデザイナを使った開発ができず、わざわざDLLにコンパイルした後aspxページに埋め込んでやらないと見た目を確認できません。その点、ユーザーコントロールは通常のWindowsフォームアプリケーションのように、デザイナ上でコントロールをD&Dし、プロパティエディタでプロパティの設定もできます。 下記に試してみたコードを示します。 [WebUserControl1.ascx] <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="WebApplication1.WebUserControl1" %> <%@ Register Assembly="WebBaseFormLib" Namespace="WebBaseFormLib" TagPrefix="cc1" %> <asp:Button ID="Button1" runat="server" Text="Button1" /> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> [WebUserControl1.ascx.cs] namespace WebApplication1 { public partial class WebUserControl1 : System.Web.UI.UserControl { protected void Page_Load(object sender, EventArgs e) { } } } [WebUserControl2.ascx] <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl2.ascx.cs" Inherits="WebApplication1.WebUserControl2" %> <%@ Reference Control="~/WebUserControl1.ascx" %> <asp:Button ID="Button2" runat="server" Text="Button2" /> [WebUserControl2.ascx.cs] namespace WebApplication1 { public partial class WebUserControl2 : WebUserControl1 //WebUserControl1を継承 { protected void Page_Load(object sender, EventArgs e) { } } } こうした場合に、WebUserControl2をaspxページで使用してもButton2しか表示されません。 期待する動きとしては、WebUserControl1に配置したButton1とtextbox1が透過的に表示して欲しかったのですが。

  • ASP.NET:複数結合テーブルのデータ変更方法について

    ASP.NET:複数結合テーブルのデータ変更方法について こんにちは。 現在Visual Studio2008(ASP.NET、ADO.NET) +SQL Server2005 Stdの環境でデータベースを参照したWebアプリケーションを作成しています。 GridViewを使い、データベースの内容を表示し、修正や追加、削除を行いたいと思っています。 (SQLのUpdate,Insert,Deleteに該当) 主キーが設定された単独のテーブルに対しては、GridView内のデータソースでデータベースを選び、 該当のテーブルを選択。その後「INSERT,UPDATEおよびDELETEステートメントの作成」オプションを選ぶことでこれらの変更方法が簡単に実装できるのを確認しております。 しかし、主キー外部キーの関係を持つ2つ以上のテーブルを結合したものに関してこれらの変更を行う場合は通常どのようにするのでしょうか。 何かヒントになるキーワードや参考になるコードを教えていただけないでしょうか? 単独のテーブルの時と同じく、結合したテーブルデータ(ビューに該当)をGridViewに表示し、そのGridView上で変更を行いたいと思っています。 SQL Server側でこれらのテーブルを結合したViewを作成し、これを選ぶことでGridViewに表示する事が可能なのは確認したのですが、やはり「INSERT,UPDATEおよびDELETEステートメントの作成」オプションは選択できませんでした。 以上よろしくお願いいたします。

  • ASP.NET(C#) DataGridのヘッダー行、フッダー行の取得方法(通常のロジックの位置から)

    ASP.NET(C#) DataGridのヘッダー行、フッダー行の取得方法(通常のロジックの位置から) ASP.NET(C#) DataGridのヘッダー行、フッダー行の取得を通常のロジックの位置(ItemDataBoudやItemCommand以外の位置) からアクセスする方法をご存知の方がいましたら、 教えてください。 1)DataGridのフッダー行や、ヘッダー行にある コントロールにアクセスしたい。 2)ヘッダー・フッダー以外の行の コントロールについては、 データグリッドのitems[index].FindControl(  にてアクセスすることに成功した。 http://www.atmarkit.co.jp/fdotnet/dotnettips/064dgcell/dgcell.html 3)わけがあって、ItemDataBoudやItemCommand 以外のフォームのロードとか、データグリッドとは 関係のないボタンのイベントハンドラのなか から、データグリッドのヘッダーや、フッダーの 中にあるコントロールを取得したいが ItemDataBoudやItemCommandの e.Itemとかでアクセスするような方法ばかり が、Webでヒットしてくる。 フッダー行とかにあるコントロールの状態を みて、特にデータグリッド上でバインドしなおす ようなことが無いようなポストバックのタイミング でデータグリッドの中ではないの場所の 画面上のコントロールの挙動が変わるような プログラムをする必要があってこの質問をしました。 ItemDataBoud、やデータグリッドのイベント 以外の場所で、ヘッダー行、フッダー行 そのもののオブジェクトがとれれば、 FindControl(とかで拾えそうな気がしますが。 そのやり方をご存知の方お願いします。

  • <ASP.NET>DataGridでOnSelectedIndexChangedイベントが発生しない。

    こんにちわ。 VS.NET2003でASP.NET+C#で開発をしております。 DataGridコントロールを使用して、選択ボタンを追加し、選択時に処理を行おうと思っているのですが、OnSelectedIndexChangedイベントが発生しません。 ホームページ等にあるソースをそのまま打ち込むと発生するのですが、自分でコントロールを配置するとうまく動いていないようです。 何か設定があるのでしょうか? 一応HTMLレベルではこんな感じで、書いてます。 =WebForm1.aspx================================== <省略> <asp:DataGrid id=DataGrid1 runat="server" OnSelectedIndexChanged="DataGrid1_Select" DataSource="<%# dataSet11 %>" DataKeyField="SYAIN_NO" DataMember="syain" AutoGenerateColumns="False"> <Columns> <asp:BoundColumn DataField="SYAIN_NO" SortExpression="SYAIN_NO" HeaderText="SYAIN_NO"></asp:BoundColumn> <asp:BoundColumn DataField="SYAIN_NAME" SortExpression="SYAIN_NAME" HeaderText="SYAIN_NAME"></asp:BoundColumn> <asp:BoundColumn DataField="ADDRESS" SortExpression="ADDRESS" HeaderText="ADDRESS"></asp:BoundColumn> <asp:BoundColumn DataField="TEL" SortExpression="TEL" HeaderText="TEL"></asp:BoundColumn> <asp:ButtonColumn Text="選択" ButtonType="PushButton" CommandName="select"></asp:ButtonColumn> </Columns> </asp:DataGrid> <省略> =============================================== 選択ボタンを押したら、DataGrid1_Selectに飛ぶはずなのですが、デバッグしても止まりません… どなたかアドバイスお願いします。

専門家に質問してみよう