如何根据规则将所有控件设置为只读?

时间:2012-01-11 22:16:40

标签: .net

我有一个带有许多控件的.aspx页面,例如表单视图,网格视图等。

根据我们在数据库表上捕获的规则,我想将此页面设为只读。 gridview,formview和简单文本框中的编辑按钮,更新按钮应该是只读的。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分: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;
}

编辑:回应问题中的评论。

某些控件具有ReadOnly属性,在设置时,会阻止对数据的更改并以更好的可读性呈现内容。但是像Button这样的东西不会有这个,所以现在你有了一些控件,一些需要Enabled = false,另一些需要ReadOnly = true。两个数组和两个循环可以做到这一点。

答案 1 :(得分: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;