在更新面板中更改Control的属性

时间:2009-11-16 12:04:36

标签: .net asp.net

我正在将我的项目从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

2 个答案:

答案 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