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() メソッドの後に実行できます。ここに良い例が
あります DetailsView でフィールドを動的に非表示にする方法 (フィールド数は常に 0)
または、これも良い例
です Listview/DetailsView: null フィールドを非表示にする

于 2012-11-12T06:31:05.097 に答える