- - PR -
DataGridの内容を各々で変更
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-01-06 11:23
いつもお世話になっております。
WebMatrixにてASP.NET(VB)でWebアプリ開発をしております。 初心者ですので扱い方がいまいちわかっておらず 表題の件でどのようにすればいいのか悩んでいます。 検索画面を作成中なのですが、検索時にDataGridを使って表示しています。 そこでしたいことなのですが…。 2つのテーブル(DB)より検索をかけ、2つのテーブル毎に表示内容を 変えるということです。 説明の仕方が悪いのでわかっていただけるか…。 例)<DB>テーブルA テーブルB <表示内容>テーブルA:A番号 テーブルB:B番号 DataGridはテンプレートで作成しており、ItemDataBoundでラベルにて「A番号」「B番号」を切り替えようと思いました。 Sub objGrd_ItemCreated(sender As object,e As DataGridItemEventArgs) Dim Text As String Text = CType(e.Item.FindControl("lblShain"),Label).text If Text = "社員" Then CType(e.Item.FindControl("lblText"),Label).text = "A番号" End If End Sub としてみたのですが…上記のコードでは動かなかったのと、よくよく考えてみるとテーブルAから取ってきたデータなのかテーブルBから取ってきたデータなのかも考えなければならないと気づきました。 このような時はどのようにすればいいのでしょうか? よろしくお願いします。 | ||||||||
|
投稿日時: 2005-01-06 11:51
詳細が分からないのではずしているかもしれませんが、DBからデータを取得する際にUNIONで1つのデータとして取得するのが一番楽だと思います。
# 「ItemDataBoundで」となっているのにコードが「ItemCreated」になっているのは、 # 単なる間違いですよね? | ||||||||
|
投稿日時: 2005-01-21 17:33
Ten.さんお返事ありがとうございます。
返事が遅くなりすみません。 >「ItemDataBoundで」となっているのにコードが「ItemCreated」になっているのは、 >単なる間違いですよね? はい…。 この件に関しては Dim myDataGridItem As DataGridItem For Each myDataGridItem In objGrd.Items CType(myDataGridItem.FindControl("lblText"),Label).text = "A番号" Next とすることで解決しました!! しかし… datagrid内のラベルのテキストを変更することはできたのですが… データバインドの値も変更したく思っています。 <td>社員番号:<%# Container.DataItem("社員番号") %></td> 上記のタグの<%# Container.DataItem("社員番号A") %>の部分を <%# Container.DataItem("社員番号B") %>に動的に変えることはできるのでしょうか? このようなことはできないのでしょうか? 分かりづらい説明ですみません。 よろしくお願いします。 | ||||||||
|
投稿日時: 2005-01-21 19:55
手っ取り早い方法としては、DataGridを二つ用意して、不要な方を.Visble = falseにするとか。
| ||||||||
|
投稿日時: 2005-01-25 11:38
今回の例に限らず、データバインドする値をいろいろと変更したいことはよくあるので、私の場合はTemplateColumnにしてコードビハインドに定義したメソッドを呼ぶようにしています。
基本的には以下のような感じになります。 aspx側
コードビハインド側
上記の例では DataRowView を引数にしていますが、必要なければ特定の列の値だけ渡すほうがメソッドの意図が分かりやすくなると思います。 | ||||||||
|
投稿日時: 2005-01-26 10:01
うわっ、初めて引用使いました。かんどー。 ASPX側で <%# Container.DataItem("社員番号" + GetColumnName()) %> としてやり ASPX.CS側で(C#ですが) public string GetColumnName() { if (条件) return "A"; else return "B"; } で動的に参照先を切り替えられるはずです。 コードビハインドでしか開発していないので WebMatrixでうまくいくかは不明です。 [ メッセージ編集済み 編集者: べーちゃん 編集日時 2005-01-26 10:05 ] |
1