2013-08-19 128 views
-1

對不起,如果這是基本的,我是.Net新手,並且環顧四周,但也許我沒有搜索正確的術語。從代碼隱藏的DetailsView中隱藏字段

我有一個DetailsView,我在設計視圖中加載。我希望這些字段中的某些僅顯示給某些用戶。所以我想在代碼隱藏方面,我可以隱藏其他領域。我還想在代碼隱藏中更改這些字段中的某些字段的HeaderText。

但是,我也需要這個DetailsView是可編輯的。如果這些字段對於某些用戶是隱藏的,我不確定這會如何影響任何內容。它會更新所有字段,甚至隱藏的字段嗎?

只有特定用戶才能看到編輯按鈕。

有沒有人有關於如何去做這樣的事情的任何提示?

+0

參見[這裏](http://stackoverflow.com/q/2192327/690329)如何查找和修改DetailsView的 – afzalulh

+0

@afzalulh謝謝控制鏈接 – Cineno28

回答

1

在您的頁面類中創建一個布爾型字段來表示控件是否應該可見,並在page_load中設置此值。 (注:Authentication.IsAuthorized僅僅是如何確定的領域,用自己的代碼替換這樣的例子)

public partial class MyPage : System.Web.UI.Page 
{ 
    protected bool showField = false; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     showField = Authentication.IsAuthorized(User.Identity.Name); 
    } 
} 

現在綁定到這個領域在您的掌控。請注意,這需要使用模板字段而不是綁定字段。

<asp:Label ID="lblHiddenField" runat="server" Visible='<%# showField %>' /> 

這將適用於您的按鈕,以及他們在模板領域。我已經使用過去的綁定字段和一些討厭的foreach循環來找到我想隱藏的控件,但老實說,這是做這個恕我直言的更直接的方式。

+0

如果你想讓它適用於按鈕,只要你使用的是<%# %> – afzalulh

+0

@Subterfuge這就是我一直在尋找的東西,所以你必須像'button1.DataBind();'一樣的數據綁定。不知道如何表達它。非常感謝您的幫助。 – Cineno28

+1

@afzalulh如果數據綁定位於模板字段中,它將自動在按鈕上調用。 Cineno28 - 沒問題!樂意效勞! –

1

,只顯示某些字段使用下面的代碼:

DetailsView1.Fields[1].Visible = false; 

要更改標題文本使用:

DetailsView1.Fields[1].HeaderText = "something"; 

編輯將只允許編輯可見字段。

要進行的編輯的DetailView使用:

DetailsView1.ChangeMode(DetailsViewMode.Edit);