- - PR -
DataGridコントロールの編集用テキストボックスサイズ設定
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-06-03 17:46
OS Windows2000
ASP.net VB.netで開発を行っています。 以前のスレッドで件名の内容の解決策が記述されているところがあったのですが 実際自分の環境ではエラーになってしまいます。 どなたかご存知の方がいれば御教授願いします。 Imports System.Web.UI.WebControls Private Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.EditCommand DataGrid1.EditItemIndex = e.Item.ItemIndex ScrDataSet() DataGrid1.DataBind() Dim line As DataGridItem = DataGrid1.Items(e.Item.ItemIndex) Dim tb1 As TextBox = CType(line.Cells(0).Controls(0), TextBox) tb1.Width = Unit.Percentage(100) End Sub エラーメッセージ 指定されたキャストは有効ではありません。 行 193: 行 194: Dim line As DataGridItem = DataGrid1.Items(e.Item.ItemIndex) 行 195: Dim tb1 As TextBox = CType(line.Cells(0).Controls(0), TextBox) ↑ここでエラーになっている 行 196: tb1.Width = Unit.Percentage(100) |
|
投稿日時: 2005-06-13 10:40
Controls(0)が本当にTextBoxなのか疑問です。
Controls(1)かもしれません。 Controls(2)かもしれません。 Controls(3)かもしれません。 Cells(0)にはControlsがいくつあるのでしょうか? Controls.Countで調べてみては? |
|
投稿日時: 2005-06-13 10:56
コントロールコレクションから指定したコントロールのみ取得する方法です。
http://blog.livedoor.jp/nal_6295/archives/286780.html _________________ 「伝える」とは「人に云う」と書く。 http://d.hatena.ne.jp/NAL-6295/ |
|
投稿日時: 2005-06-13 11:58
Cells(0)に複数のControlsがある可能性があるわけだから
Dim tb1 As TextBox = CType(line.Cells(0).FindControl("TextBox1"), TextBox) と、IDで検索して確定させてからキャストするのがいいと思います。 |
|
投稿日時: 2005-06-15 16:37
かりろ様・NAL-6295様,
返事が遅くなり大変申し訳御座いません。 レスを立ててから他の作業をしながら、調べながらしていたら遅くなってしまいました。 皆様の指摘により解決いたしました。 Cells(0)の指定が間違っていました。自分の環境ではButtnになっていました。 かりろ様・NAL-6295様、的確なアドバイス本当にありがとう御座いました。 以下のソースで解決しました。 Private Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.EditCommand '============================================================ ' 編集状態にする '============================================================ DataGrid1.EditItemIndex = e.Item.ItemIndex ScrDataSet() DataGrid1.DataBind() '============================================================ ' 行の指定 '============================================================ Dim line As DataGridItem = DataGrid1.Items(e.Item.ItemIndex) With line '======================================================== ' 列の指定 '======================================================== DirectCast(.Cells(2).Controls(0), TextBox).Width = Unit.Percentage(78) 'テキストボックス幅の指定 End With End Sub |
1