1

当 DetailsView 不处于只读模式时,我想将模板字段(链接按钮)设置为不可见。我创建了一个链接按钮来替换自动生成的“删除”按钮,并希望在编辑和插入时隐藏它。

<asp:DetailsView ID="resultDetailsView" runat="server" AutoGenerateRows="False" DataKeyNames="smo_code,id"
    DataSourceID="detailviewDataSource" Height="50px" Width="125px" OnItemInserting="resultDetailsView_ItemInserting"
    OnItemUpdating="resultDetailsView_ItemUpdating" OnItemUpdated="resultDetailsView_ItemUpdated"
    OnItemDeleted="resultDetailsView_ItemDeleted" OnItemInserted="resultDetailsView_ItemInserted"
    OnItemDeleting="resultDetailsView_ItemDeleting" OnModeChanging="resultDetailsView_ModeChanging"
    OnDataBound="resultDetailsView_DataBound" OnItemCommand="resultDetailsView_ItemCommand">
    <Fields>
        <asp:BoundField DataField="event" HeaderText="event" SortExpression="event" />
        <asp:TemplateField ShowHeader="False">
            <ItemTemplate>
                <asp:LinkButton ID="deleteLink" runat="server" CommandName="Delete" Text="Delete"
                    OnClientClick='return confirm("Are you sure you want to delete this item?");' />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:CommandField ShowDeleteButton="False" ShowEditButton="True" ShowInsertButton="True" />
    </Fields>
</asp:DetailsView>

在后面的代码中,FINDCONTROL 返回 null:

protected void resultDetailsView_DataBound(object sender, EventArgs e)
{
    LinkButton deleteLink = (LinkButton)resultDetailsView.FindControl("deleteLink");
    if (resultDetailsView.CurrentMode == DetailsViewMode.ReadOnly)
    {
        deleteLink.Visible = true;
    }
    else
    {
        deleteLink.Visible = false;
    }
 }
4

1 回答 1

0

您可以在 .DataBind() 方法之后执行此操作。这是一个很好的例子
How to dynamic hide fields in a DetailsView (fields count is always 0)
甚至这也是一个很好的例子
Listview/DetailsView: Hide a null field

于 2012-11-12T06:31:05.097 回答