一个多选题限制最多只能选N个,CheckBoxList 如何判断
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server"> <title>无标题页</title> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <div> <asp:DataList ID="DataList1" runat="server" RepeatLayout="Flow"> <ItemTemplate> <%#Eval("OrderID") %> <asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="False" RenderMode="Inline" UpdateMode="Conditional"> <ContentTemplate> <asp:CheckBoxList ID="CheckBoxList1" runat="server" DataSource='<%# GetOrderDetails(Convert.ToInt32(Eval("OrderID"))) %>' DataTextField="UnitPrice" DataValueField="ProductID" RepeatLayout="Flow" RepeatDirection="Horizontal" AutoPostBack="True" OnSelectedIndexChanged="CheckBoxList1_SelectedIndexChanged"> </asp:CheckBoxList> </ContentTemplate> </asp:UpdatePanel> </ItemTemplate> </asp:DataList> <asp:UpdatePanel ID="UpdatePanel2" runat="server" ChildrenAsTriggers="False" RenderMode="Inline" UpdateMode="Conditional"> <ContentTemplate> <asp:Label ID="Label1" runat="server"></asp:Label> </ContentTemplate> </asp:UpdatePanel> </div> </form> </body> </html> private void BindDataList() { SqlConnection cn = new SqlConnection(@"server=./SQLExpress;uid=sa;pwd=;database=Northwind"); SqlDataAdapter da = new SqlDataAdapter("select top 10 orderid, CustomerID, OrderDate from Orders", cn); DataSet ds = new DataSet(); cn.Open(); da.Fill(ds); cn.Close(); DataList1.DataSource = ds.Tables[0].DefaultView; DataList1.DataBind(); } protected DataTable GetOrderDetails(int orderID) { SqlConnection cn = new SqlConnection(@"server=./SQLExpress;uid=sa;pwd=;database=Northwind"); SqlDataAdapter da = new SqlDataAdapter("select ProductID, UnitPrice from [Order Details] where orderid = @orderid", cn); da.SelectCommand.Parameters.AddWithValue("@orderid", orderID); DataSet ds = new DataSet(); cn.Open(); da.Fill(ds); cn.Close(); return ds.Tables[0]; } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindDataList(); } } protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e) { CheckBoxList chk = sender as CheckBoxList; int count = 0; foreach (ListItem li in chk.Items) { if (li.Selected) { count++; if (count >= 3) { Label1.Text = "Wrong"; UpdatePanel2.Update(); break; } else { Label1.Text = string.Empty; UpdatePanel2.Update(); } } } ((UpdatePanel)((DataListItem)chk.NamingContainer).FindControl("UpdatePanel1")).Update(); } |