从通用动态数据中删除删除按钮

时间:2013-04-19 13:53:03

标签: c# asp.net asp.net-dynamic-data

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

在屏幕上显示为: enter image description here

我不希望用户能够删除它,所以如何从屏幕上的选项中删除它?(红色箭头指向的图标) 感谢

1 个答案:

答案 0 :(得分:1)

您应该为List.aspx创建自定义Invoice Info table页面(从项目的PageTemplates文件夹中的List.aspx进行复制),然后您可以使用 delete 按钮删除新代码自定义页面(请参阅GridView中带有LinkBut​​ton控件的ItemTemplate)。您还可以在自定义页面上向GridView添加RowDataBound事件,并在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是带有操作的GridView的TemplateField中LinkButton控件的ID。

有关ASP.NET动态数据中页面自定义的更多信息,您可以在How to: Customize the Layout of an Individual Table By Using a Custom Page Template找到。

修改

我想提请您注意,默认情况下可以从Details.aspx页面删除表项。因此,您还应该创建自定义Details.aspx页面,以防止从默认的Details.aspx页面中删除记录。

因此,您应该有两个自定义页面:

~/DynamicData/CustomPages/InvoiceInfo/List.aspx

~/DynamicData/CustomPages/InvoiceInfo/Details.aspx

修改

为了在动态数据网站中实施更加集成的安全方法,请参阅Securing Dynamic Data 4 (Replay)的Steve解决方案。