(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; }
在屏幕上显示为:
我不希望用户能够删除它,所以如何从屏幕上的选项中删除它?(红色箭头指向的图标) 感谢
答案 0 :(得分:1)
您应该为List.aspx
创建自定义Invoice Info table
页面(从项目的PageTemplates文件夹中的List.aspx进行复制),然后您可以使用 delete 按钮删除新代码自定义页面(请参阅GridView中带有LinkButton控件的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解决方案。