2009-11-16 61 views
0

我正在将我的项目从2003年迁移到asp.net 2008.我的问题是关于只读文本框。我有一些文本框为只读。2008年,我不能从这些文本框获取值,如果readonly = true在aspx.So我写一个函数转换readonly = false,并添加readonly属性在runtime.It运行良好,如果我的文本框不在更新面板。在更新面板中,页面的控件不会来我的课,只有一个控制来它是UpdatePanel。如何在更新面板中获得控件,如何更改它?我的代码如下。我在每个页面中调用它。在更新面板中更改控件的属性

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

你的意思是.NET 1.1到.NET 3.5?或Visula Studio 2003到Visual Studio 2008? – 2009-11-16 12:08:25

+0

Visula Studio 2003到Visual Studio 2008.迁移后我使用.Net 3,5 ofcourse。 – Alexander 2009-11-16 12:16:49

回答

0

我在.NET 3.5的Visual Studio 2008 SP1中创建了一个新的ASP.NET网站作为目标框架。我能够使用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; 
    } 
} 

您的任何投入将帮助我们来帮助你。

+0

谢谢,但回发导致此问题。查看此链接,你会明白我的意思。 http://aspadvice.com/blogs/joteke/archive/2006/04/12/16409.aspx – Alexander 2009-11-16 12:39:42

+0

ohh ...但有一个问题,如果用户不能更改数据,为什么不使用数据中的数据来源是用于首先填写文本框中的数据。 – 2009-11-16 15:27:18

+0

我使用javascript datecalendar这些文本框。他们拥有日期信息,我列出的记录取决于这些文本框。 – Alexander 2009-11-19 14:01:25

0

尝试使用这个。它会得到面板的所有控件...

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 
相关问题