- 題名: 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での作成は無理ではないのか。
また、その場合、セルへのコントロールの追加方法もわかりません。
なかなか上記の内容を満たせそうなサンプルもないので、質問させて頂きました。
お手数ですが、ご教授願えませんでしょうか。
よろしくお願いします。