2012-01-31 29 views
1

我有一個文本框和<td>內的下拉根據某些條件,我將不得不隱藏文本框並顯示下拉菜單。如果下拉顯示,則可以使用相同的必填字段驗證程序。這可能嗎?動態地更改RequiredFieldValidator的ControlToValidate

<td> 
    <asp:TextBox ID="txtLimit" runat="server" /> 
    <asp:DropDownList ID="ddlCurLiabiltyLimits" runat="server" CssClass="TextNormal" OnSelectedIndexChanged="ddlCurLiabiltyLimits_SelectedIndexChanged"> 
    </asp:DropDownList> 
    <asp:RequiredFieldValidator runat="server" ControlToValidate="txtLimit" ErrorMessage="Answer is required." ClientIDMode="Static" /> 
</td> 

在背後說我的代碼:

RequiredFieldValidator1.ControlToValidate = ddlCurLiabiltyLimits.ID ; 

,但這似乎並不奏效。

+0

你什麼時候替換'CintrolToValidate'? – abatishchev 2012-01-31 19:41:18

+0

頁面加載之後以及驗證按鈕的單擊事件中。 – BumbleBee 2012-01-31 19:45:16

+0

你是什麼意思「頁面加載後」?什麼驗證按鈕? – pseudocoder 2012-01-31 20:01:21

回答

2

可能導致您問題的一件事是在DropDownList上使用RequiredFieldValidator時,您需要指定RequiredFieldValidator.InitialValue屬性來指示DropDownList中「第一個」項的值。也許這就是你的問題所在?

2

我的猜測是,您可能在頁面生命週期中將ID分配給ControlToValidate屬性的時間太晚。可以在頁面的OnInit事件中分配嗎?

爲DropDownList使用第二個RequiredFieldValidator可能更容易。

+1

我測試了這個場景,並且在Page.Load中設置RequiredFieldValidator.ControlToValidate工作正常。 – pseudocoder 2012-01-31 20:19:04

+0

@pseudocoder - 啊,很高興知道。聽起來像OP在Button的Click事件中這樣做。 – 2012-01-31 21:34:55