转发器内部的条件RequiredFieldValidator

时间:2012-05-03 13:10:00

标签: asp.net repeater requiredfieldvalidator

我有一个转发器,它包含一个单选按钮列表,一个文本框和一个requiredfieldvalidator控件。 Radiobuttonlist包含以下内容:

Meets (Value M)
Above (Value A)
Below (Value B)
N/A (Value(N/A)

文本框设置为允许用户为其答案输入一些理由,而requiredfieldvalidator确保文本框不为空,足够简单。但是范围已经改变了一点,现在客户希望只有在答案不是“M”的情况下才能触发requiredfieldvalidator。

我已经尝试为验证器设置Load方法,但是当验证器加载时,它不知道RBL中的答案是什么,因为它在用户应答之前被触发。我不认为我可以做回发,因为转发器是在Modal弹出窗口内处理的,如果我做回发,我不确定会发生什么。只有当用户选择“Meets”以外的其他内容时,如何才能将验证器设置为false?

1 个答案:

答案 0 :(得分:1)

试试这个:

java脚本:

<script type="text/javascript">
    function UpdateValidator(radioID, validatorid) {
        //enabling the validator only if the checkbox is checked
        var enableValidator = $("#" + radioID).is(":checked");          
        ValidatorEnable(validatorid, enableValidator);
    }
</script>

cs code:

protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            RadioButton rd = e.Item.FindControl("myRb") as RadioButton;
            RequiredFieldValidator rfv = e.Item.FindControl("myRfv") as RequiredFieldValidator;
            // you can just pass "this" instead of "myDiv.ClientID" and get the ID from the DOM element
            rd.Attributes.Add("onclick", "UpdateValidator('" + rd.ClientID + "','" + rfv.ClientID + "');");
        }
    }