2

asp.net 4.0 フォーム。

テーブル ID キーにリンクされたボタンを使用して、Gridview を動的に作成する必要があります。

そこで、Gridview をセットアップし、列の追加を開始します。

   private void SetupGV()
    {

        try
        { //0
            TemplateField tf = new TemplateField();
            tf.HeaderText = "X";


            tf.ItemTemplate = new AddToItemTemplate();
            GV.Columns.Add(tf);

            //1
            BoundField b = new BoundField();
            b.DataField = "FullName";
            b.HeaderText = @"Staff / Role";
            GV.Columns.Add(b);

....

次に、ITemplate AddToItemTemplate を作成します。

    public class AddToItemTemplate : ITemplate
    {

        public AddToItemTemplate(){}

        public void InstantiateIn(Control container)
        {

            ImageButton ib = new ImageButton();
            ib.ImageUrl = "~/Content/CIDimg/action4.gif";
            ib.Command += ib_Command;
            ib.CommandName = "delete";

            container.Controls.Add(ib);
        }

        void ib_Command(object sender, CommandEventArgs e)
        {
            string s = e.CommandArgument.ToString();

        }

        #endregion
    }          

GV_RowDataBound で ID を収集し、画像ボタン コマンドの引数に問題なく設定します。

すべて正常に動作しますが、メソッドib_Commandは ITemplate の一部であるため静的です。ページ コントロールにもページ インスタンス変数にもアクセスできません。

グリッドビューが ASPX マークアップ ファイルで作成されるときに「oncommand」タグで行われるように、ボタン (ib.command +=) をページ メソッドのいずれかにリンクする方法はありますか?

4

1 に答える 1

3

コードとコメントに基づいて、画像ボタン列を Gridview に追加しようとしています。このために、新しいテンプレートを作成する必要はありません。代わりに、以下のように ButtonField を追加できます

ButtonField buttonField = new ButtonField();
buttonField.ButtonType = ButtonType.Image;
buttonField.ImageUrl = "~/Images/bullet.png";
buttonField.CommandName = "delete";
GV.Columns.Add(buttonField);

グリッドビューの RowCommand イベントで、必要なアクションを実行できます

protected void GV_RowCommand(object sender, GridViewCommandEventArgs e)
{
   if (e.CommandName=="delete")
   {
   }
}
于 2014-07-21T14:56:41.630 に答える