2012-01-11 5 views
0

私は、フォームビュー、グリッドビューなど多くのコントロールを持つ.aspxページを持っています。ルールに基づいてすべてのコントロールを読み取り専用にするにはどうすればよいですか?

私たちがデータベーステーブルに取り込むルールに基づいて、このページを読み取り専用にします。編集ボタン、gridview、formview、および単純なテキストボックスの更新ボタンは、読み取り専用にする必要があります。

ご協力いただければ幸いです。

+2

すべてcontolsは、[有効]と呼ばれるプロパティを持っています(http ://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.enabled.aspx)。 –

+0

真。しかし、私は多くを持っているので、私はすべてのコントロールのためにそれを追加したくありません。 – user728148

+1

読み取り専用ボタンとは何ですか? –

答えて

0

私はASPを知らないと言って始めます。しかし、私がWinFormを使用していた場合...

フォームまたはパネルでEnabled = falseを設定すると、すべての子コントロールが自動的に無効になります。

Form.Enabled = false; 
// or 
MyDataPanel.Enabled = false; 

注意を必要とするすべてのコントロールの配列を作成し、それを繰り返し行うことができます。

private MyForm() 
{ 
    InitializeComponent(); 
    // Control array must be initialized after InitializeComponent is called. 
    dataControls = { 
     EditButton, 
     UpdateButton, 
     FormView, 
     SimpleTextBox}; 
} 
private readonly Control[] dataControls; 

private void BulkSetEnabled(bool value) 
{ 
    foreach (Control control in dataControls) 
     control.Enabled = value; 
} 

EDIT:問題のコメントを受けて

一部のコントロールにはReadOnlyというプロパティがあり、設定するとデータの変更が防止され、読みやすくすることができます。しかし、Buttonのようなものはこれを持っていないので、コントロールの組み合わせがあります。Enabled = falseを必要とするものとReadOnly = trueを必要とするものがあります。 2つの配列と2つのループがそれを行うことができます。

+0

Hand-E-Foodに感謝します。 ReadOnlyプロパティはデータコントロールには使用できません。 – user728148

0

マークアップ:

<asp:Panel runat="server" ID="MyPanel" > 
    Name: 
    <br /> 
    <asp:TextBox runat="server" ID="NameTextBox" /> 
    <br /> 
    <br /> 
    Phone: 
    <br /> 
    <asp:TextBox runat="server" ID="PhoneTextBox" /> 
    <br /> 
    <br /> 
    <asp:Button runat="server" ID="SubmitButton" Text="Submit" /> 
</asp:Panel> 

コード(編集不可):

MyPanel.Enabled = false; 

コード(編集可能):

MyPanel.Enabled = true; 
関連する問題