Удалить кнопку удаления из общих динамических данных

(динамические данные asp.net) В файле db.cs я объявил ниже (относящийся к таблице "Информация о счете")

[ScaffoldTable(true)]
[DisplayName("Invoice Info")]
[MetadataType(typeof(Invoice_Info_MetaData))]
[DropDownList(Role = "Role_AllPowerfulGroup")]
partial class Invoice_Info
{
}

public class Invoice_Info_MetaData
{
    [Display(Name = "id", Order = 10)]
    public object id { get; set; }

    [Display(Name = "Name", Order = 20)]
    [Required()]
    public object Name { get; set; }

    [Display(Name = "Address", Order = 30)]
    [Required()]
    public object Address { get; set; }

    [Display(Name = "County", Order = 40)]
    [Required()]
    public object County { get; set; }

На экране это отображается как:введите описание изображения здесь

Я не хочу, чтобы пользователь мог удалить это, так как я могу удалить его из экранных настроек??(значок, на который указывает красная стрелка) Спасибо

1 ответ

Решение

Вы должны создать кастом List.aspx страница для Invoice Info table (скопируйте из List.aspx в папку PageTemplates в вашем проекте), а затем вы можете удалить код с помощью кнопки удаления на новой пользовательской странице (см. ItemTemplate с элементом управления LinkButton внутри GridView). Также вы можете добавить RowDataBound событие для GridView на пользовательской странице и реализовать скрытие кнопки удаления в Code-Behind:

protected void gvInvoiceInfo_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            LinkButton delete = (LinkButton) e.Row.FindControl("DeleteLinkButton");
            delete.Visible = false;
        }
    }

где DeleteLinkButton это идентификатор LinkButton контроль внутри TemplateField GridView с действиями.

Дополнительную информацию о настройке страницы в динамических данных ASP.NET вы можете найти в разделе Практическое руководство. Настройка макета отдельной таблицы с помощью пользовательского шаблона страницы.

РЕДАКТИРОВАТЬ:

Хотел бы обратить ваше внимание на то, что по умолчанию есть возможность удаления элемента таблицы со страницы Details.aspx. Поэтому вам также следует создать пользовательскую страницу Details.aspx, чтобы предотвратить удаление записи со страницы Details.aspx по умолчанию.

В результате у вас должно быть две пользовательских страницы:

~/DynamicData/CustomPages/InvoiceInfo/List.aspx

а также

~/DynamicData/CustomPages/InvoiceInfo/Details.aspx,

РЕДАКТИРОВАТЬ:

Чтобы реализовать более интегрированный подход к безопасности на сайте динамических данных, см. Решение Стива в разделе " Защита динамических данных 4 (воспроизведение)".

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