はじめまして。
現在ASP.net でweb画面を作成していますが、動的に作成したコントロールの削除が不規則な動きをしており困り果ててこちらにきました。よろしくお願いします。
配置してあるテーブルに行だけを動的に追加しており
その行には、テキストボックスと削除ボタンが含まれています。
不規則な動きというのは、以下になります。
1行目の削除ボタンを押す→1行目が消える
1行目になった削除ボタンを押す→変化なし
1行目の削除ボタンを押す→末尾の行が消える
という状態です。デバッグで確認すると、
Removeで消しているコントロールIDは確かに1行目のものなのに、
画面が開くとそれが残っているという現象です。
そしてなぜ末尾が途中から消されていくのかは分かりません。
もしかして思うのは、毎回Loadで動的に生成しているため、
削除ボタンが押されたときもLoad一度生成したものをイベントハンドラで削除しようとしていておかしくなるのかなという気もしますが、
毎回生成しないとコントロール自体が消えてしまい、Loadでなくイベントハンドラで生成するようにすると、今度は入力値が消えてしまいます。
ソースは以下になります。(一部抜粋)
とても困っています。宜しくお願いします。
'テーブルの枠だけデザイナで作成しておく
<table id="tblDynamic" runat="server" enableviewstate="false">
</table>
'ロード
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
’配置してあるテーブルに行を動的に追加する
For rowCnt As Integer = 1 To 10
tblFormat.Rows.Add(retCreateRow(rowCnt))
Next
End Sub
’テーブルの行(コントロールを含む)を作成して返す関数
Function retCreateRow(rowCnt As Integer) As HtmlTableRow
Dim tr As New HtmlTableRow
Dim cel1 As New HtmlTableCell
Dim cel2 As New HtmlTableCell
Dim txt As New TextBox
Dim btn As New ImageButton
txt .ID = "txt " & "_" & rowCnt
cel1.Controls.Add(txt)
tr.Cells.Add(cel1)
btn.ID = "btn" & "_" & rowCnt
btn.text="行削除"
AddHandler btn.Click, New System.Web.UI.ImageClickEventHandler(AddressOf btnDelete_btnInsert)
cel2.Controls.Add(btn)
tr.Cells.Add(cel2)
Return tr
End Function
'行削除イベントハンドラ
Private Sub btnDelete(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim ControlIdx = Split(CType(sender, ImageButton).ID, "_")(1)
'この削除ボタンがある行Indexを取得
For HitIdx As Integer = 1 To tblFormat.Rows.Count
If Not IsNothing(tblFormat.Rows(HitIdx).FindControl(CType(sender, ImageButton).ID)) Then
'あった!この行を削除する
Me.tblFormat.Rows.RemoveAt(HitIdx)
Exit For
End If
Next
End Sub
No.1ベストアンサー
- 回答日時:
どの行を生成するのか記憶しておく変数を準備して これをSessionに登録してみてはいかがでしょう
dim bRow(10) as Boolean
' Page_Loadイベント
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
if IsPostBack then
'何かのアクションで呼び出されたのなら bRowをSessionから復元
bRow = Session("bRow")
else
' Sessionを新規生成
Session("bRow") = bRow
end if
for n as integer = 1 to 10
if bRow(n) = false then
' 削除済みフラグが設定されていなければ生成
tblFormat.Rows.Add(retCreateRow(n))
end if
next
End Sub
' 行削除ハンドラ
Private Sub btnDelete(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim btn as ImageButton = CType(sender, ImageButton)
Dim ControlIdx = Split(btn.ID, "_")(1)
' Sessionから bRowを取得
bRow =Session("bRow")
if bRow(ControlIdx) = false then
bRow(ControlIdx) = true
dim row as HtmlTableRow = btn.Parent.Parent
tblFormat.rows.Remove(row)
' Sessionの更新
Session("bRow") = bRow
end if
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) VBA 行削除した連番 4 2023/06/27 16:00
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Excel(エクセル) マクロで行を追加、削除すると行位置がずれますが、解決方法はありませんか?。 5 2022/05/28 16:03
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
喧嘩をしてLINE削除され、 また...
-
今日の日付が過ぎたらその行を...
-
同じ様な内容の質問を繰り返しても
-
「教えてgoo」の回答歴の削除数...
-
女友達にLINEしたら、既読スル...
-
インスタグラムのギャラリーの...
-
もう関わりたくない人がいたらL...
-
エクセルVBAで行削除時にエラー...
-
削除依頼に基づき議事録のある...
-
GoogleフォトとiPhoneを同期し...
-
ワードで画像に埋め込まれたハ...
-
離婚後の連絡
-
Facebookメッセンジャーの不具合
-
ダブルクォーテーションの削除...
-
日テレニュースHP、記事削除は...
-
指定した文字があった場合、そ...
-
VBA IF文でORを使ったとき後ろ...
-
【C#】ifと#ifの違い、そして#e...
-
お気に入りサイトが削除できない
-
すべてやりきった、大満足を意...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA:Openステートメントで開い...
-
「医者も看護師も自分に嫌がら...
-
ハメ撮りが流出したら
-
指定した文字があった場合、そ...
-
教えて!gooにはどのカテゴリが...
-
もう関わりたくない人がいたらL...
-
真剣な質問ほど消されるのはど...
-
Facebookメッセンジャーの不具合
-
インスタグラムのギャラリーの...
-
エクセルで住所の混在する「丁...
-
アクセスにおいて間違って削除...
-
回答してる間に質問が消えるっ...
-
喧嘩をしてLINE削除され、 また...
-
バッチファイルを使用したsql@p...
-
Facebookに自分が四つもアップ...
-
ウェブページへのアクセス不可 ...
-
同じ質問
-
日テレニュースHP、記事削除は...
-
女友達にLINEしたら、既読スル...
-
エクセルVBAで行削除時にエラー...
おすすめ情報