0

Gridview で Item テンプレートを動的に作成しています。

TemplateColumn BtnTmpField = new TemplateColumn(); 
BtnTmpField.ItemTemplate = new DynamicallyTemplatedGridViewHandler(ListItemType.Item, "Edit", "Button");  
BtnTmpField.HeaderTemplate = new DynamicallyTemplatedGridViewHandler(ListItemType.Header, "Edit", "Command");  
BtnTmpField.EditItemTemplate = new DynamicallyTemplatedGridViewHandler(ListItemType.EditItem, "Update", "Button"); dgdefault.Columns.Add(BtnTmpField);

public void InstantiateIn(System.Web.UI.Control Container) 
{ 
    switch (ItemType) 
    { 
        case ListItemType.Header: Literal header_ltrl = new Literal(); 
        header_ltrl.Text = "" + FieldName + ""; 
        Container.Controls.Add(header_ltrl); 
        break; 
        case ListItemType.Item: 
        switch (InfoType) 
        { 
             case "Button": 
             LinkButton edit_button = new LinkButton(); 
             edit_button.ID = "edit_button"; 
             edit_button.Text = "Edit"; 
             edit_button.CommandName = "Edit"; 
             Container.Controls.Add(edit_button); 
             break; 
        }
        break;
        case ListItemType.EditItem: 
             if (InfoType == "Button") 
             { 
             LinkButton update_button = new LinkButton(); 
             update_button.ID = "update_button"; 
             update_button.CommandName = "Update"; 
             update_button.Text = "Update  "; 
             LinkButton cancel_button = new LinkButton(); 
             cancel_button.ID = "cancel_button"; 
             cancel_button.CommandName = "Cancel"; 
             cancel_button.Text = "Cancel"; 
             Container.Controls.Add(update_button); 
             Container.Controls.Add(cancel_button);
            }                 
            break;
      }     
} 

「編集」ボタンを選択すると、「更新」ボタンと「キャンセル」ボタンが表示され、選択した行が編集可能になります。[編集] をクリックすると、DataGrid の ItemCommand イベントが正しく発生します。「更新」または「キャンセル」ボタンをクリックしても、何も起動しません。ascx ページに onUpdateCommand または onCancelCommand を明示的に配置すると、ItemCommand は起動せず、UpdateCommand または CancelCommand も起動しません。EditItemTemplate のボタンをクリックしても何も起動しない理由がわかりません。また、すべての page_init ポストバックですべてがロードされています。どんなヒントも役に立ちます

4

3 に答える 3

1

私はそれを考え出した。基本的にアイテムテンプレートを作成し、edititem を使用せずに 3 つの個別のボタンを追加しました。データ グリッド itemdatabound 関数では、表示する必要があるボタンを非表示にして表示するだけです。

于 2011-04-04T12:11:32.407 に答える
0

今日も同じ問題がありました。編集項目の「ヘッダー」テンプレートを呼び出していることに気づきました。理由はわかりませんが、「スイッチ」の直前に次を追加してください。

System.Diagnostics.Debug.WriteLine(string.Format("Template: {0}",ItemType.ToString()));

少数のレコードでテストしている場合、レコードを編集しようとすると、「ヘッダー」アイテムタイプが呼び出されることがわかります。

あなたが同じことを経験しているかどうか知りたいです。

于 2011-11-10T22:54:52.050 に答える
0

グリッドの PreRender でイベントを再バインドしていますか?

于 2011-04-01T17:08:11.410 に答える