Событие кнопки 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, связанной с сеткой данных, я просто скрываю и показываю кнопки, которые нужно показать.
У меня была такая же проблема сегодня. Я заметил, что он вызывает шаблон "Заголовок" для редактирования элементов. не знаю почему, но добавьте следующее прямо перед "switch":
System.Diagnostics.Debug.WriteLine(string.Format("Template: {0}",ItemType.ToString()));
Если вы тестируете с небольшим количеством записей, вы должны увидеть, что он вызывает тип элемента заголовка, когда вы пытаетесь редактировать запись.
Мне было бы интересно узнать, испытываете ли вы то же самое.