1

複数の値を含む asp:ListBox があります。ユーザーは、このボックスで常に 1 つの特定の項目を選択する必要があり、オプションで他の項目を選択する必要があります。

これを行う最善の方法は何ですか?

前もって感謝します!

4

2 に答える 2

1

ASP.Netバリデーターはどれも、すぐに使用できる要件に適合していると思います。必要なのは、CustomValdiatorサーバーとクライアントのコードを使用して検証を実行することです。

例:

ASPX

<script type="text/javascript" src="Scripts/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
    function clientValidate(sender, args) {
        args.IsValid = false;
        $("#" + sender.controltovalidate + " option:selected").each(function (index, item) {
            if ($(this).text() == "QuestionText1") {
                args.IsValid = true;
                return;
            }
        });
    }
</script>


    <asp:ListBox runat="server"
        SelectionMode="Multiple" ID="lb" AppendDataBoundItems="false"
        DataTextField="QuestionText" DataValueField="ID"
     >
        <asp:ListItem Text="text1" />
        <asp:ListItem Text="text2" />
    </asp:ListBox>
    <br />
    <br />
    <asp:CustomValidator ErrorMessage="errormessage" ControlToValidate="lb"
        ClientValidationFunction="clientValidate"
        OnServerValidate="cv_ServerValidate"
        runat="server" ID="cv" />
    <asp:Button Text="text" runat="server" />

コードビハインド

    protected void cv_ServerValidate(object sender, ServerValidateEventArgs e)
    {
        e.IsValid = false;
        foreach (ListItem item in this.lb.Items)
        {
            if (item.Selected)
            {
                if (item.Text.ToLower().Trim() == "questiontext1")
                {
                    e.IsValid = true;
                    break;
                }
            }
        }
    }
于 2012-07-19T03:45:13.193 に答える
0

私がすることは、フォームの送信時にJavaScriptの検証を行い、サーバー側の検証を行って、送信されたものが有効であることを確認することです。

カスタム検証コントロールを使用してこれを達成し、ポストバック時にページが有効であることを確認することもできます。

于 2012-07-19T02:03:53.123 に答える