- PR -

DataGridの非可視の列の値を取得したい。

1
投稿者投稿内容
QPまよね〜ず
会議室デビュー日: 2003/05/08
投稿数: 3
投稿日時: 2003-05-08 22:50
題名そのままです。
VS.NETでWebformにDataGridをおいて、
DBからFillしたDataSetをデータソースに割り当てます。
そうすると普通にDataGridに自動的に列が展開されます。
そこで、DataGridのプロパティーで列を非可視に出来るのですが。

その、非可視にした列の中にあるであろうデータを取得したいのですが
出来るんでしょうか?

データベースとの連携ツールを作成しているのですが、
プライマリーキーがクライアントに見えてはかっこ悪いと思い非可視にしました。
けれども、データの更新にはもちろんPKを使いますので取得したいのです。
もしよかったらヒントください。
未記入
ベテラン
会議室デビュー日: 2002/09/10
投稿数: 68
投稿日時: 2003-05-09 09:28
非可視にした列がBoundColumnなら、

DataGrid1.Items[x].Cells[y].Text とか
e.Item.Cells[y].Text (eはDataGridItemEventArgs)

で普通にとってこれると思いますよ。
QPまよね〜ず
会議室デビュー日: 2003/05/08
投稿数: 3
投稿日時: 2003-05-09 10:54
すいません、すべての列はテンプレート列に変更していました。

DataGrid1.Items[1].Cells[1].Controls[1].Text 
では取得できました、しかし

e.Item.Cells[0].Controls[1].Text
e.Item.Cells[1].Controls[1].Text  // 非可視
e.Item.Cells[2].Controls[1].Text

のこれらの結果は
1番目:"更新"   更新用列のボタン
2番目:""    なぜか空欄
3番目:"100-500" これは意図した正しい値です。
となってしまいます。
DataGridItemEventArgsからは非可視列の中のTextBoxの中のTextは取れないってことに
なってるんですかね。
もうちょっと調べてみます。
QPまよね〜ず
会議室デビュー日: 2003/05/08
投稿数: 3
投稿日時: 2003-05-09 17:59
とりあえず、出来ましたのでご報告いたします。
ですがあっているのか心配です。

ソートの都合もあり、DataGridにDVというDataViewをデータソースとしてバインドしました。
それで、Update_Commandメソッド内に

int PK = (int)this.DV[e.Item.DataSetIndex].Row["PrimaryKey"];

として、編集ボタンを押している列の非可視のプライマリーキーである
PrimaryKeyの値が取れました。
DVのインデクサに「e.Item.DataSetIndex」を使ったんですが
名前からしてこれってDataSetクラス専用って事ではないですよね?
というか、DataGridのプロパティーですよね。
DataGridの〜行目って意味で使ったんですが、動いてるんでこれでよしとしてます。
1

スキルアップ/キャリアアップ(JOB@IT)