none
ascx内で、DetailsViewに動的にテンプレートフィールドを追加する RRS feed

  • 質問

  • お世話になっております。
    ASP.NET 3.5  VS2010 C# を使用しております。

    DetailsViewを.ascxの中に用意し、
    そのフィールドに、テンプレートフィールドを動的に追加しようとしております。
    このとき、DetailsViewまわりの挙動がおかしくなります。


    まず、テンプレートを用意しました。
    ---------------------------------------

    public class MyColumnTemplate : System.Web.UI.ITemplate
    {
        public void InstantiateIn(System.Web.UI.Control container)
        {
            Label myLabel = new Label();
            myLabel.Text = "sample text";
            container.Controls.Add(myLabel);
        }
    }


    用意したテンプレートを用いて、.ascxの中で、
    DetailsViewのフィールドに動的にテンプレートフィールドを
    追加しました。
    ----------------------------------------

    TemplateField tf = new TemplateField();
    tf.HeaderText = "myHeaderText";
    tf.ItemTemplate = new MyColumnTemplate();
    tf.EditItemTemplate = new MyColumnTemplate();
    DetailsView1.Fields.Add(tf);


    また、DetailsViewのモードをEditに変更しました。
    ----------------------------------------

    DetailsView1.ChangeMode(DetailsViewMode.Edit);



    この状態で、
    DetailsViewの更新ボタンを押しても、キャンセルボタンを押しても、
    また、ページ内のDetailsView以外のボタンを押してもUpdate処理が行われます。

    テンプレートフィールドを追加しない場合、
    DetailsViewの更新ボタンを押せば、更新処理が、
    キャンセルボタンを押せば、キャンセル処理が行われます。

    上記処理のうち、どこを直せばうまくいくようになるのでしょうか。
    宜しくお願い致します。

    2011年4月29日 9:30

回答

  • > DetailsViewの更新ボタンを押しても、キャンセルボタンを押しても、
    > また、ページ内のDetailsView以外のボタンを押してもUpdate処理が
    > 行われます。

    今提供されている情報だけでは、カスタムテンプレートを追加したことに
    よって、ボタンの CommandName プロパティが "Update" に変わってしまっ
    たことぐらいしか思いつきません。(普通はあり得ないですが)

    データソースコントロールに何を使っているかなど、全体が見えないので
    原因を特定するのが難しいです(少なくとも自分には)。

    問題を再現できる必要最小限のコードに絞ってアップできないでしょうか?

    • 回答の候補に設定 山本春海 2011年5月20日 8:34
    • 回答としてマーク 山本春海 2011年6月8日 8:54
    2011年4月30日 4:43