2010-07-22 27 views
0

我有一個頁面上的幾個相同的用戶控件的aspx頁面。用戶控件包含一個文本框,其上有一個必需的字段驗證器。驗證程序工作正常,但setonfocus =「true」似乎不起作用,更進一步,驗證程序顯示錯誤消息時按鈕aspx頁面,該按鈕仍會觸發代碼。asp.net usercontrol SetFocusOnError

下面是aspx頁面看起來像用戶控件和按鈕。

ucTB:ucTextBox ID="ucTextR" runat="server" ValidationGroup="txtRequired" Required="_true" 

asp:Button ID="btnSave" runat="server" Text="Click" ValidationGroup="txtRequired" 

和用戶控件驗證

asp:RequiredFieldValidator ID="rfTextBox" runat="server" ControlToValidate="txtTextBox" 
SetFocusOnError="true" ErrorMessage="Required Field" EnableClientScript="false" 

用戶控制已經連接到抓住從aspx頁面驗證,並在用戶控件使用它......像這樣

Public Property ValidationGroup() As String 
    Get 
     Return CType(ViewState("ValidationGroup"), String) 
    End Get 
    Set(ByVal Value As String) 
     ViewState("ValidationGroup") = Value 
    End Set 
End Property 

Protected Sub AssignValidation() 
    For Each control As Control In Me.Controls 
     Dim [property] As PropertyInfo = control.[GetType]().GetProperty("ValidationGroup") 
     If [property] Is Nothing Then 
      Continue For 
     End If 
     [property].SetValue(control, ValidationGroup, Nothing) 
    Next 
End Sub 

我在page_load上加載AssignValidation

無論如何..希望這是您的信息n指出我在正確的方向。

我想要做的是如果所需的字段驗證器把焦點放在用戶控件,如果沒有在usercontrol文本框中,也沒有aspx頁面上的按鈕不會觸發..就像我想的如果一個aspx頁面上使用驗證沒有用戶控件

感謝 香

回答

0

不能設置用戶控件可見的,因爲它不是一個可見的容器,它的行爲。您可以通過編程方式自己設置焦點。看到這一點:

http://forums.digitalpoint.com/showthread.php?t=282224

或者,你可以設置可編程驗證用戶控件中的文本框的ID;在用戶控件代碼隱藏中顯示textboxID屬性,該代碼返回文本框的ID,並讓您的頁面將驗證者的controltovalidateID指定給此。

+0

感謝您的迴應..我不是試圖將用戶控件設置爲可見。我希望做的是,如果驗證發現錯誤,表單上的按鈕不會觸發事件。當用戶控件不在圖片中時,這似乎是工作的方式。但是通過用戶控件,驗證會觸發,但如果驗證失敗,按鈕事件也會觸發。我希望它不要這樣做,因爲在非用戶控制事件的驗證失敗時不會這樣做。 – jvcoach23 2010-07-23 12:23:56