Событие кнопки EditItemTemplate Datagrid не запускается

Я динамически создаю шаблон элемента в Gridview.

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;
      }     
} 

Когда я выбираю кнопку "Редактировать", появляются кнопки "Обновить" и "Отмена" с выбранной строкой, которую можно редактировать. Событие ItemCommand DataGrid срабатывает правильно при нажатии "Изменить". Когда я нажимаю кнопки "Обновить" или "Отмена", ничего не срабатывает. ItemCommand не срабатывает, равно как и UpdateCommand или CancelCommand, когда я явно помещаю onUpdateCommand или onCancelCommand на страницу ascx. Я не могу понять, почему ничего не срабатывает, когда нажимаются кнопки в EditItemTemplate. Также все загружается при каждой обратной передаче page_init. Любые советы будут полезны

3 ответа

Решение

Я понял. Я в основном создал шаблон элемента и добавил 3 отдельные кнопки без использования элемента редактирования. В функции databound, связанной с сеткой данных, я просто скрываю и показываю кнопки, которые нужно показать.

Вы связываете события в PreRender сетки?

У меня была такая же проблема сегодня. Я заметил, что он вызывает шаблон "Заголовок" для редактирования элементов. не знаю почему, но добавьте следующее прямо перед "switch":

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

Если вы тестируете с небольшим количеством записей, вы должны увидеть, что он вызывает тип элемента заголовка, когда вы пытаетесь редактировать запись.

Мне было бы интересно узнать, испытываете ли вы то же самое.

Другие вопросы по тегам