有没有人编写过一个可以将aspx页面上的所有控件转换为只读版本的函数?例如,如果使用UserDetails.aspx编辑和保存用户信息,如果具有不适当权限的人进入该页面,我想将其呈现为只读.因此,大多数控件将转换为标签,加载来自可编辑原始控件的相应数据.
我认为这可能是一个相当简单的例程,即:
Dim ctlParent As Control = Me.txtTest.Parent
Dim ctlOLD As TextBox = Me.txtTest
Dim ctlNEW As Label = New Label
ctlNEW.Width = ctlOLD.Width
ctlNEW.Text = ctlOLD.Text
ctlParent.Controls.Remove(ctlOLD)
ctlParent.Controls.Add(ctlNEW)
Run Code Online (Sandbox Code Playgroud)
...实际上你需要一个文本框 - >标签转换,但我希望有人可能知道现有的功能,因为在这里和某些控制和情况可能存在一些陷阱.
更新:
- 只是将ReadOnly属性设置为true不是一个可行的解决方案,因为它看起来很愚蠢,事情就像那样灰色. - 避免手动创建辅助视图就是这一点,所以使用巧妙的方式来显示使用标签手工构建的用户界面的只读版本是我想避免的.
谢谢!!
您可以使用多视图,只有一个显示视图和一个编辑视图。然后按以下方式进行分配:
lblWhatever.Text = txtWhatever.Text = whateverOriginatingSource;
lblSomethingElse.Text = txtSomethingElse.Text = somethingElseOriginatingSource;
myViews.SelectedIndex = myConditionOrVariableThatDeterminesEditable ? 0 : 1;
Run Code Online (Sandbox Code Playgroud)
然后根据权限交换视图。
不是最优雅的,但可能适合您的情况。
也许我应该详细说明一下..忽略 psuedo (不确定我是否有 selectedindex yada yada 正确的..但你明白了)。
<asp:Multiview ID="myViews" SelectedIndex="1">
<asp:View ID="EditView">
<asp:TextBox ID="txtWhatever" /><br />
<asp:TextBox ID="txtSomethingElse" />
</asp:View>
<asp:View ID="DisplayView">
<asp:Label ID="lblWhatever" /><br />
<asp:Label ID="lblSomethingElse" />
</asp:View>
</asp:Multiview>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5614 次 |
最近记录: |