动态数据 - 如何在列表中显示主键字段

时间:2009-09-29 13:23:38

标签: asp.net dynamic-data

我终于深入挖掘动态数据(姗姗来迟)。我注意到,当我查看网站时,在主表列表中,不显示主键字段。

例如,我有一个包含状态代码的表,有两个字段。

StatusCode int identity Primary Key
StatusCodeDescription varchar(25)

在我的网站的StatusCodes / List.aspx页面上,只显示StatusCodeDescription。

我意识到我无法 编辑 主键,但我想 显示 它。动态数据可以实现吗?

我自己可以想到一些解决方法,而且说实话,我可以进一步深入了解文档以便自己找到它,但我希望有更多经验的人知道答案并且可以节省一些时间。指向相应文档的链接甚至可以很好。

3 个答案:

答案 0 :(得分:6)

在花了大部分时间进行研究后,我得到了另一个可能更“正确”的答案。从我所看到的,这是基于每个表(意味着你必须每表一次这样做)

使用ScaffoldColumn属性:

我使用部分类扩展了为表(StatusCodes)自动生成的类,如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.DynamicData;
using System.ComponentModel.DataAnnotations;

namespace ScholarshipAdmin
{
    [MetadataType(typeof(StatusCodesMetaData))]
    public partial class StatusCodes 
    {

    }

    public class StatusCodesMetaData
    {
        [ScaffoldColumn(true)] 
        public object StatusCode;
    }
}

答案 1 :(得分:0)

我自己找到了一个可能的答案。我会发布这个以防万一其他人来寻找未来的答案。请注意,只有表格都包含 一列 主键时,才能使用此功能。

我还会将这个问题保留在那里,以防其他人有一个更好,更简单的答案,可以使用具有多个主键的表。我宁愿选择别人的答案而不是我自己的答案。

在List.aspx中,我将以下内容添加到GridView1。

<asp:TemplateField>
   <HeaderTemplate>
      <%# table.PrimaryKeyColumns[0].Name %>
   </HeaderTemplate>
   <ItemTemplate>
      <%# DataBinder.Eval(Container.DataItem, table.PrimaryKeyColumns[0].Name) %>
   </ItemTemplate>
</asp:TemplateField>

答案 2 :(得分:0)

以防万一其他人像我这样在这个已有10年历史的线程中出现问题,我正在使用Linq to SQL和DyanamicData,并且能够通过在O / R设计器中将“自动生成的值”更改为False来解决此问题该列的属性

到目前为止,我看到的一个潜在陷阱是,当尝试插入一行时,仍然会提示用户输入该字段