ASP.NET c # проверять только часть формы, если установлен флажок - PullRequest
4 голосов
/ 25 августа 2010

Дано:

    <div class="subHead">Stock Options</div>
    <table class="settingTable">
        <tr>
            <td colspan="2"><b>Limited Stock</b></td>
        </tr>
        <tr>
            <td width="50" align="center"><asp:CheckBox ID="limitedStock" runat="server" /></td>
            <td>If checked this product will have a limited stock</td>
        </tr>
    </table>
    <table class="settingTable">
        <tr>
            <td colspan="2"><b>Stock Count</b></td>
        </tr>
        <tr>
            <td>
                <asp:TextBox ID="stockCount" runat="server" CssClass="tbox"></asp:TextBox>
                <asp:RequiredFieldValidator runat="server"
                          id="RequiredFieldValidator2"
                          ControlToValidate="stockCount"
                          ErrorMessage="You need to enter a value"
                          display="Dynamic" />
                <asp:RangeValidator runat="server"
                    id="rangeVal1"
                    MinimumValue="0" MaximumValue="999999999999"                        
                    ControlToValidate="stockCount"
                    ErrorMessage="Enter a numeric value of at least 0"
                    display="Dynamic" />
            </td>
        </tr>
    </table>

Как мне сделать так, чтобы валидатор для подсчета запаса не работал, если не установлен флажок ограниченного запаса?

Ответы [ 2 ]

3 голосов
/ 25 августа 2010

Используйте взамен CustomValidator. См. Раздел «Проверка на стороне клиента» внизу этой страницы: http://msdn.microsoft.com/en-us/library/f5db6z8k%28VS.71%29.aspx

Вы можете использовать скрипт, который проверяет значение флажка и выполняет вашу проверку.

<script language="text/javascript">
    function validateStockCount(oSrc, args){
       //Use JQuery to look for the checked checkbox and only if it is found, validate
       if($('.limitedStock:checked') == undefined) {
           args.IsValid = true;
       }
       else {
           args.IsValid = (args.Value.length >= 0) && (args.Value.length <= 999999999999);

       }
    }
</script>

<asp:CheckBox ID="limitedStock" runat="server" CssClass="limitedStock" />

<asp:TextBox ID="stockCount" runat="server" CssClass="tbox"></asp:TextBox>

<asp:CustomValidator id="CustomValidator1" runat=server 
   ControlToValidate = "stockCount"
   ErrorMessage = "You need to enter a numeric value of at least 0!"
   ClientValidationFunction="validateStockCount" >
</asp:CustomValidator>
2 голосов
/ 25 августа 2010

Вы можете установить для AutoPostBack значение true для флажка, а затем в событии флажка вы можете включить / отключить обязательное поле проверки.

На странице aspx установите свойство AutoPostBack для флажка

<asp:CheckBox ID="limitedStock" runat="server" AutoPostBack="True" /> 

В событии CheckChanged флажка вы просто устанавливаете свойство Enabled RequiredFieldValidator, как требуется:

RequiredFieldValidator2.Enabled = limitedStock.Checked;

Джеймс: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...