【问题标题】:ASP.NET DetailsView changing field display for edit verses insert modeASP.NET DetailsView 更改字段显示以用于编辑和插入模式
【发布时间】:2010-07-18 01:22:42
【问题描述】:

对于 ASP.NET,我使用 DetailsView 来插入和编辑记录。对于编辑模式,我不想显示主键字段,因为它不应该被更改。对于插入模式,我想显示主键字段,因为它不存在,用户可以通过 DropDownList 指定它,以确保他们将选择一个唯一值。 TemplateField 用于主键字段的 DetailsView 标记(因此插入模式的 DropDownList)。

我的问题是我无法让主键字段在编辑模式下不显示并在插入模式下显示。在我的标记中:

<asp:TemplateField HeaderText="name" InsertVisible="True" Visible="True">
    <InsertItemTemplate>
        <asp:DropDownList ID="ddl2NonMembers" runat="server"
            Width="155px" 
            Sourceless="sqlNonMembers" 
            DataTextField="name" 
            DataValueField="id_adm" 
            SelectedValue='<%# Bind("member_grp") %>'>
        </asp:DropDownList>
    </InsertItemTemplate>
</asp:TemplateField>

使用 TemplateField Visible="True",HeaderText="name" 始终显示我不希望用于编辑模式的内容。使用 TemplateField Visible="False",该字段永远不会显示我不想要的插入模式。

如何实现我想要的插入诗句编辑模式的显示行为。我可以以编程方式更改某些属性,而不是依赖纯标记方法,但我无法找出解决方案。

请指教!

【问题讨论】:

    标签: asp.net detailsview templatefield


    【解决方案1】:

    您可以测试详细信息查看模式并查看它是否处于-Edit- 模式。然后,您可以通过编程方式隐藏 DropDownList。

    if (myDetailsView.CurrentMode == DetailsViewMode.Edit) 
    {
        DropDownList ddl2NonMembers = (DropDownList)myDetailsView.FindControl("ddl2NonMembers");
        ddl2NonMembers.Visible = false;
    }
    

    此外,您可以隐藏整个列,但您需要知道该列的索引。假设列索引为 #5,您可以执行以下操作:

    if (myDetailsView.CurrentMode == DetailsViewMode.Edit) 
    {
        myDetailsView.Columns[5].Visible = false;
    }
    

    最后,您可以在 Code-Behind 中创建一个函数,该函数检查 DetailsView 的当前值并将其分配给 Template 字段的 Visible 属性:

    public bool showPKField() {
        bool result = true;
        if(myDetailsView.CurrentMode == DetailsViewMode.Edit)
            result = false;
        return result;
    }
    

    在您的模板字段内:

    <asp:TemplateField HeaderText="name" InsertVisible="True" Visible='<%# showPKField() %>'>
    

    【讨论】:

    • 我需要切换整个列是否可见,所以我选择了第二个选项,但是我必须使用 myDetailsView.Fields[5].Visible = false (标记的 TemplateField 是在 标记内, 用于 GridView)。
    • 对不起,我没有在 VS 中测试这个,是的,它是 Fields 集合。我的坏:)
    • 我不知道 InsertVisible 属性。这个对我有用,我把它变成了假。 +1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 2011-08-14
    • 1970-01-01
    相关资源
    最近更新 更多