※ ChatGPTを利用し、要約された質問です(原文:ListView 削除ボタン押下時に値を取得したい)
ListViewで行のアイテムを取得する方法
このQ&Aのポイント
ListViewで削除ボタン押下時に行のアイテムを取得する方法について教えてください。
更新ボタンはListViewのOnItemUpdatingイベントからLabelコントロールを取得していますが、削除ボタンでは同じ方法が使えないようです。
削除ボタンがItemTemplateとSelectedItemTemplateにしか置いていない場合、どのように行のアイテムを取得すれば良いのでしょうか。
ListView 削除ボタン押下時に値を取得したい
VS2012 c# WEBフォームです。
ListViewで削除ボタンを押したときに行のアイテムを取得したいのですが、方法を教えて下さい。
更新ボタンはListViewのOnItemUpdatingイベントから
Label str_id = (Label)ListView1.EditItem.FindControl("idLabel1");
とすると取得きました。
同じように
削除ボタンはListViewのOnItemDeletingイベントから
Label str_id = (Label)ListView1.SelectedItemTemplate.FindControl("idLabel1");
とすると、FindControlが使えない旨のメッセージが表示されます。
ItemTemplateでも同じです。
削除ボタンはItemTemplateとSelectedItemTemplateにしか置いていないのですが、
どのように取得すれば良いのでしょうか。。
お礼
下記で無事取ることができました。 お手数をおかけしました。 protected void ListView1_ItemDeleting(object sender,ListViewDeleteEventArgs e) { ListViewItem item =ListViewItem)ListView1.Items[e.ItemIndex]; Label idLabel = (Label)item.FindControl("idLabel"); }
補足
回答ありがとうございます。 >プログラムで記述している状態と、実行されている時点でのオブジェクトの状態は異なることがあります。 →こちらは理解しているつもりです >ItemTemplateやSelectedItemTemplateは実行時は存在していないはずです。 →削除ボタンですので、少なくとも行のレコードが存在しているので、 この状態でItemTemplateが存在していないということが理解できません。 EditItemTemplateであれば編集ボタンが押されていない状態で、 EditItemTemplateが存在しないことは理解できますが、 ItemTemplateも存在していないというのは本当でしょうか? 下記でチェックしてみるとItemTemplateは存在しているように見えます。 if (ListView1.ItemTemplate != null) { Debug.Print("ItemTemplate は ある"); } else { Debug.Print("ItemTemplate は ない"); }