在CheckBoxList控件

时间:2015-10-27 21:49:31

标签: c# asp.net

我有一个CheckBoxList,其中包含可供学生选择的所有模块。选择的数量可能因学生及其学位而异。

<asp:CheckBoxList ID="module_semester_1" runat="server" DataSourceID="semester1" DataTextField="module_name" DataValueField="module_id" ></asp:CheckBoxList>
            <asp:Button CommandName="NextView" ID="btnnext2" runat="server" Text="Next" OnClick="btnnext2_Click" />

现在,我想设置一个限制,以便学生只能从CheckBoxList中选择3个模块,我将如何使用C#进行此操作,如何显示错误消息以通知学生只选择3?任何帮助将不胜感激。我目前有以下C#:

protected void btnnext2_Click(object sender, EventArgs e)
    {
        String user = username.Text;

        string ConnectionString = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        SqlConnection myConnection = new SqlConnection(ConnectionString);

        myConnection.Open();

        int count = module_semester_1.Items.Count;

        for (int i = 0; i < count; i++)
        {
            if (module_semester_1.Items[i].Selected)
            {
                string value = module_semester_1.Items[i].Value;

                String query = "INSERT INTO students_vs_modules (student_no, module_id) VALUES (@student_no, @module_id)";

                SqlCommand myCommand = new SqlCommand(query, myConnection);
                myCommand.Parameters.AddWithValue("@student_no", user);
                myCommand.Parameters.AddWithValue("@module_id", value);

                myCommand.ExecuteNonQuery();       
            }
        }      
        myConnection.Close();
    }

1 个答案:

答案 0 :(得分:3)

您可以使用jquery来警告用户。这是轻量级的,因为它不需要往返服务器。

   <script type="text/javascript">
        var limit = 3;
        $(function () { 
        $('[id*="module_semester_1"]').on('change', function (evt) {
            if ($('[id*="module_semester_1"]:checked').length > limit) {
                this.checked = false;
                alert('cannot select more than ' + limit);
            }
        });
        });
    </script>
    <asp:CheckBoxList ID="module_semester_1" runat="server">
        <asp:ListItem Value="1">1</asp:ListItem>
        <asp:ListItem Value="2">2</asp:ListItem>
        <asp:ListItem Value="3">3</asp:ListItem>
        <asp:ListItem Value="4">4</asp:ListItem>
        <asp:ListItem Value="5">5</asp:ListItem>
    </asp:CheckBoxList>