■53810 / ) |
Re[5]: Listviewの編集ボタン押下時処理 |
□投稿者/ まさひろ (46回)-(2010/09/27(Mon) 17:44:04)
|
もりおさん、いつもいつもありがとうございます。
> >>> txtNAMEというプロパティ名のコントロールがないのではないですか? >> >>aspx側(ItemTemplate、AlternatingItemTemplate、SelectedItemTemplateにて記述)で >>記述していていることを確認しました。 > > コードを拝見する限りではコントロール txtNAME が EditItemTemplate に記述されていることを確認す > べきでないでしょうか。 >
すみません。ItemTemplate、AlternatingItemTemplate、SelectedItemTemplateでは <asp:Button ID="btnEdit" runat="server" CommandName="Edit" Text="編集" OnClick="btnEdit_Click" />、 EditItemTemplateではtxtNAMEのコントロールが記述されていることを確認しました。
> エラーの原因がコントロール txtNAME を参照できないことであるならば、TextBox の作成される > タイミングは検討するべき事柄のように思います。 > > その前に、エラーの原因を絞り込んでみてはいかがでしょうか。 > 「オブジェクト参照がオブジェクトインスタンスに設定されていません」 > というエラーメッセージは、いずれかのオブジェクトが Nothing ですよーという意味です。 > > DirectCast(ListView1.EditItem.FindControl("txtNAME"), TextBox).BackColor = Drawing.Color.Red > > このコードにおいて、エラーの原因となりうるオブジェクトは以下のものです。 > > ListView1 > ListView1.EditItem > ListView1.EditItem.FindControl("txtNAME") > > こんな感じで、1つずつ確認してみてはいかがでしょうか。 > > Protected Sub btnEdit_Click(ByVal sender As Object, ByVal e As System.EventArgs) > If ListView1 Is Nothing Then > Debug.WriteLine("ListView1 は Nothing") > Else > Debug.WriteLine("ListView1 は Not Nothing") > End If > > If ListView1.EditItem Is Nothing Then > Debug.WriteLine("ListView1.EditItem は Nothing") > Else > Debug.WriteLine("ListView1.EditItem は Not Nothing") > End If > > If ListView1.EditItem.FindControl("txtNAME") Is Nothing Then > ... >
こういう風に解析する、と言う事がまだ自分では思い浮かばす、勉強不足だと つくづく感じます・・・・
もりおさんに教えていただいた解析方法で確認したところ、ListView1.EditItemが Nothingになっていました。 ということは編集ボタンを押した段階ではEditItemTemplateのテキストボックスはまだ 作成されていないという認識でよろしいでしょうか?
また、その場合、テキストボックスが作成された後というのはイベントかなにかで 拾えるものなのでしょうか?
|
|