2009-11-16 66 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 
相關問題