0

フォームビューを編集するためのユーザー/管理者シナリオを用意しようとしています。私が持っているのは、フォームビューの編集ボタンがデフォルトで visible=true であることです。次に、ロールが管理者と等しくないかどうかを示すステートメントを使用し、編集ボタンの可視性を false に設定します。クリックしたり、ポストバックを実行したりすると、本来のように機能します。ユーザーが管理者の場合、アイテムは非表示のままです...のようなステートメントを使用するフィルタリングにドロップダウンリストを使用する場合を除きますdataSource1.FilterExpression = ("ID=" + ddl1.SelectedValue)

フォームビューの編集リンク ボタンのデフォルトの可視性を true に設定するか false に設定するかに関係なく、FilterExpression を使用すると、望ましくないものの可視性が変更されます。これは、FilterExpression がコントロールの可視性を、コントロールのデフォルトの可視性プロパティが設定されているものに設定するためです。

以下は、私が意味することの例としてのコードです。助けてください!

protected void Page_PreRender(object sender, EventArgs e)
    {

    string role;
    role = "client";
    LinkButton editGeneralOverview = (LinkButton)formViewGeneralOverview.FindControl("EditButton");

if (role != "admin"))
{
    editGeneralOverview.Visible = false;
}

if (ddlIDFilter.SelectedValue != "-- ALL --")
{
    dataSourceGeneralOverview.FilterExpression = ("ID=" + ddlIDFilter.SelectedValue);
}
4

1 に答える 1

0

FormViews DataBound イベントで非表示にすることができます。

protected void formViewGeneralOverview_DataBound(Object sender, EventArgs e)
{
    LinkButton editGeneralOverview = (LinkButton)formViewGeneralOverview.FindControl("EditButton");

    if (role != "admin"))
    {
        editGeneralOverview.Visible = false;
    }
}

このようにして、FilterExpression が既に有効になった後に可視性設定が (再) 適用されます。

注: わからない場合はFormView、OnDataBound プロパティを設定して、このイベントをマークアップに添付できます。このような:

<asp:FormView ID="formViewGeneralOverview" 
    OnDataBound="formViewGeneralOverview_DataBound" 
    ...whatever other propeties you have >
    ...templates and junk...
</asp:FormView>
于 2013-03-05T21:05:12.117 に答える