- 題名: GridViewに複数行にまたがる編集テキストボックスの作成
- 日時: 2008/03/28 16:15:07
- ID: 21745
- この記事の返信元:
- (なし)
- この記事への返信:
- [21746] 【補足】GridViewに複数行にまたがる編集テキストボックスの作成2008/03/28 17:01:16
- ツリーを表示
はじめまして、H.K.R.と申します。 # 引っ込んだ略 → H.K.R. にハンドルネームを変更いたします。 私はASP.NETについてはほとんど無知なので、 もし変なことを書いていたら申し訳ないのですが、 以下のコードでとりあえずGridView内のセルにTextBoxを表示することができましたので、 試してみてはいかがでしょうか? ※ 私が試した環境:WindowsXPHomeSP2、InternetExplorer7、 VisualWebDeveloper2008ExpressEdition(対象Frameworkは、.NET Framework 2.0) Imports System.Data Partial Class _Default Inherits System.Web.UI.Page ' GridView1がデザイナで配置されていることを前提とする Protected Overrides Sub OnLoad(ByVal e As System.EventArgs) testC() MyBase.OnLoad(e) End Sub Private Sub testC() Dim dt As New DataTable For i As Integer = 1 To 5 dt.Columns.Add(String.Format("列 - {0}", i)) Next For i As Integer = 1 To 7 Dim dr As DataRow = dt.NewRow For j As Integer = 1 To dt.Columns.Count dr.Item(j - 1) = String.Format("{0}行目のデータ{1}", i, j) Next dt.Rows.Add(dr) Next Me.GridView1.DataSource = dt Me.GridView1.DataBind() Me.GridView1.EnableViewState = False addTextBox() End Sub Private Sub addTextBox() For index As Integer = 0 To Me.GridView1.Rows.Count - 1 Dim r As GridViewRow = Me.GridView1.Rows(index) 'データ行でなければ何もしない If r.RowType = DataControlRowType.DataRow Then '********************************************* 'ここから空のテキストボックスを追加してみる(name値も設定せずに・・・) '********************************************* For i As Integer = 1 To r.Cells.Count - 1 Dim tc As TableCell = r.Cells(i) Dim tbx As New TextBox tbx.Columns = 15 tbx.Text = tc.Text tc.Controls.Add(tbx) Next '1行おきに、ヘッダ部を連結 If r.RowIndex Mod 2 = 0 Then r.Cells(0).RowSpan = 2 Else r.Cells.RemoveAt(0) End If End If Next End Sub End Class 以上です。
分類:[ASP.NET]
GridViewにて下記のような表示・編集を行おうと思っています。
(図解)
列1 列2 列3 列4 列5
行1 タイトル □ □ □ □
行2 □ □ □ □
・行2×列5のサイズのテーブルを作成します。
・列2〜列5はテキストボックスにて編集可能とします。
・列1は行1、2を結合しています。
・行追加ボタンを別途作成し、その場合は、上記と同サイズ(2×5)を
1グループとして追加します。
・テキストボックスは条件によって、編集不可(ラベル表示)にします。
まだ知識不足なのですが、調べていると、templateでの作成は無理ではないのか。
また、その場合、セルへのコントロールの追加方法もわかりません。
なかなか上記の内容を満たせそうなサンプルもないので、質問させて頂きました。
お手数ですが、ご教授願えませんでしょうか。
よろしくお願いします。