我正在将我的项目从2003迁移到asp.net 2008.我的问题是关于Readonly Textboxes。我有一些文本框作为readonly。在2008年,如果在aspx中readonly = true,我无法从这些文本框中获取值。所以我写一个函数转换readonly = false并在运行时添加readonly属性。如果我的文本框不在更新面板中,它运行良好。在更新面板中,页面控件不会来到我的类,因为只有一个控件来。它是UpdatePanel.How我可以在更新面板中获得控件吗?如何更改它?我的代码如下。我在每个页面都调用它。
Public Shared Sub clearReadOnlyTextboxes(ByVal pg As Page)
For Each c As Control In pg.Form.Controls
If c.[GetType]().ToString() = "System.Web.UI.WebControls.TextBox" AndAlso DirectCast(c, TextBox).[ReadOnly] Then
DirectCast(c, TextBox).[ReadOnly] = False
DirectCast(c, TextBox).Attributes.Add("readonly", "readonly")
End If
Next
End Sub
答案 0 :(得分:0)
我在Visual Studio 2008 SP1中创建了一个新的ASP.NET网站,其中.NET 3.5作为目标框架。我能够使用readonly文本框中的值来更新标签的值。
以下是示例:
设计
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:textbox ID="Textbox1" runat="server" ReadOnly="True"></asp:textbox>
</div>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</form>
</body>
</html>
代码背后:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Textbox1.Text = "GANESH";
Label1.Text = Textbox1.Text;
}
}
您的任何意见都可以帮助我们。
答案 1 :(得分:0)
尝试使用此..它将获取Panel中的所有控件...
Private Sub clearReadOnlyTextboxes(ByVal pg As Control)
For Each c As Control In pg.Controls
Select Case TypeName(c)
Case Is = "TextBox"
If c.[GetType]().ToString() = "System.Web.UI.WebControls.TextBox" AndAlso DirectCast(c, TextBox).[ReadOnly] Then
DirectCast(c, TextBox).[ReadOnly] = False
DirectCast(c, TextBox).Attributes.Add("readonly", "readonly")
End If
Case Is = "Panel"
clearReadOnlyTextboxes(c)
Case Is = "HtmlForm"
clearReadOnlyTextboxes(c)
End Select
Next
End Sub