- - PR -
DataGridでクリックしたセルの値を取得したい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-08-11 12:17
ASP.Net(2003)でDataGridを使用しています。
グリッド上でクリックされたセルの値を取得したいのですが やり方がさっぱりわかりません。 どなたかわかる方いますでしょうか? 今月はじめたばかりのASP初心者ですのでお願いします | ||||
|
投稿日時: 2006-08-11 12:49
各セルの中の項目をリンクボタンかなにかにしておいて、そこに値も埋め込んでおいて
クリックしたらページが呼び出されるといった形にする必要がありそうですね。 #他にやり方あるかなぁ。 | ||||
|
投稿日時: 2006-08-11 16:56
早速の返信ありがとうございます。
やっぱりその手になりますか。 初心者なりにリンクボタンにすれば出来そうな予感はあったのですが、 見た目が美しくないですよねー・・・。 何とかお盆休み前にと思っていましたが休み明けに作業してみます。 | ||||
|
投稿日時: 2006-08-11 17:57
値保存用のhiddenかなんかを用意しておいて、セルがクリックされたら(onclick)値を hiddenに入れてsubmitするようなjavascriptを、DataGridのItemCreatedあたりで埋めればよいかと。 | ||||
|
投稿日時: 2006-08-11 18:06
DataGridじゃないんですが。
似たような処理で、学校の授業等で使う時間割表の ユーザーコントロールを使ってました。 以下、うろ覚えのコードですが・・・ ------------------------------------------------------------ public class MyUserControl : System.Web.UI.UserControl { protected System.Web.UI.WebControls.Table TimeTable; public event System.Web.UI.WebControls.CommandEventHandler OnCommand; public void MakeTimeTable() { int iRowCurrent; // Current row int iCellCurrent; // Current cell int iRowCnt = 6; // 時限数 int iCellCnt = 5 ;// 曜日数(月〜金) for(iRowCurrent=1; iRowCurrent <= iRowCnt; iRowCurrent++) { TableRow tRow = new TableRow(); TimeTable.Rows.Add(tRow); for (iCellCurrent = 1; iCellCurrent <= iCellCnt; iCellCurrent++) { TableCell tCell = new TableCell(); ImageButton imgbutton = new ImageButton(); imgbutton.ImageUrl="image.gif"; //ImageButtonのCommandNameに列と行の値を設定 imgbutton.CommandName = iCellCurrent.ToString()+iRowCurrent.ToString() ; imgbutton.Command += new CommandEventHandler(ClickImage); tCell.Controls.Add(imgbutton); tRow.Cells.Add(tCell); } } } private void ClickImage(Object sender,CommandEventArgs e) { OnCommand(sender, e); } } //以下、実装側 protected MyUserControl myUserControl; //InitializeComponentかどこかに以下を記述 myUserControl.MakeTimeTable(); myUserControl.OnCommand += new CommandEventHandler(this.OnClickmyUserControl); //クリックされたときのイベント private void OnClickmyUserControl(object sender, CommandEventArgs e) { //e.CommandNameで何曜日の何時限がクリックされたのかを判断 string comname = e.CommandName; } ------------------------------------------------------------ iRowCurrentとiCellCurrentは1から始めてますが、 実際は0から始めてヘッダーとして使ってたと思います。 なので、月曜1限のimgbutton.CommandNameは11、月曜2限なら12、 火曜1限なら21といった具合です。 結局はどっとねっとふぁんさんの意見と似たようなもんですが。 | ||||
|
投稿日時: 2006-08-24 15:42
遅くなりました。
結局JavaScriptのonClickを使用して処理を行いました。 aspx.csのDataGrid1_ItemDataBoundイベント処理内 こんな感じで記入 foreach( DataGridItem selectCol in DataGrid1.Items ) { selectCol.Cells[0].Attributes["onClick"]="javascript:Form1.TextBox1.value=this.innerHTML"; selectCol.Cells[1].Attributes["onClick"]="javascript:Form1.TextBox2.value=this.innerHTML"; //全セル上記と同様の処理を記入 } (ちなみにセルの内容をテキストボックスに表示するコードです) 皆さんありがとうございました <(_ _)> |
1