asp.net中checkboxlist判断至少选择一项的方法

.aspx代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="1_CheckBoxList.aspx.cs" Inherits="_1_CheckBoxList" %>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="JS/jquery-1.8.3.js" type="text/javascript"></script>
    <style type="text/css">
        body,div,h2{ margin:0px; padding:0px;}
        .warn { font-size:12px; color:Red;}
    </style>


    <script type="text/javascript">
        function EmptyCheck(_chk, _span, _txt) {
        
            var _check = $(":checked", _chk).val();
            
            if (_check==null) {
                $(_span).text("请至少选择1项!");
                $(_txt).val("");
                return false;
            } else {
                $(_span).text("");
                return true;
             }
        }
    </script>
</head>


<body>
    <form id="form1" runat="server">
    <div>
    <h2>CheckBoxList控件应用实例:</h2>
<p>1.手动设置项: <span class="warn" id="err_chk_1"></span></p>
    <%--注意checkBoxList的最终呈现:是在一个TABLE之内--%>
        <asp:CheckBoxList ID="chkList_1" runat="server">
            <asp:ListItem Value="A">第一项</asp:ListItem>
            <asp:ListItem Value="B">第二项</asp:ListItem>
            <asp:ListItem Value="C">第三项</asp:ListItem>
            <asp:ListItem Value="D">第四项</asp:ListItem>
        </asp:CheckBoxList>


        
        <asp:Button ID="btn_1" runat="server" Text="检测哪几项被选中" 
         OnCommand="checkResult" CommandArgument="chkList_1,txt_result_1"
        OnClientClick="return EmptyCheck(‘#chkList_1‘,‘#err_chk_1‘,‘#txt_result_1‘)"
         />
        
        <asp:TextBox ID="txt_result_1" runat="server" Width="400"></asp:TextBox>
        <hr />



<p>2. 从数据库中获取列表<span class="warn" id="err_chk_2"></span></p>
        <asp:CheckBoxList ID="chkList_2" runat="server" DataSourceID="ADS_CHK2" 
            DataTextField="se_name" DataValueField="se_id">
        </asp:CheckBoxList>
        <asp:AccessDataSource ID="ADS_CHK2" runat="server" DataFile="~/DATA/EV.mdb" 
            SelectCommand="SELECT [se_name], [se_id] FROM [T_SERIES]">
        </asp:AccessDataSource>


        <asp:Button ID="btn_2" runat="server" Text="检测CHK2哪几项被选中" 
         OnCommand="checkResult" CommandArgument="chkList_2,txt_result_2"
         CommandName="cmd_selist"
         OnClientClick="return EmptyCheck(‘#chkList_2‘,‘#err_chk_2‘,‘#txt_result_2‘)"
         />
        
        <asp:TextBox ID="txt_result_2" runat="server" Width="400"></asp:TextBox>


        <p>
        构建SQL语句:<br />
        <asp:TextBox ID="txt_sql" runat="server" TextMode="MultiLine" Rows="4" Width="400" />


        </p>
    </div>


   
    </form>
</body>
</html>


设计视图如下:


.aspx.cs代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _1_CheckBoxList : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }


    //自定义函数: 构建listitem的TEXT和VALUE组成的字符串
    protected string getResult(ListItem _li) {
        string _result = "";
        _result = _li.Text + ":" + _li.Value + ",";
        return _result;

    }


    //onCommand代码,根据e携带的参数,确定对哪一组checkboxlist处理,
    //并将结果输出到那个文本框
    //##### ! 特别注意:文本框,checkBoxList元素的ID都是带相同后缀的构成方式,
    //    思考他们出现在ListView下,clientIDMode设置成Predictable后,参数e该如何设置


    protected void checkResult(object s, CommandEventArgs e) {
        //分割参数,获取两个ID
        string[] id = e.CommandArgument.ToString().Split(',');


        //由参数获取对应的checkListBox和TextBox
        CheckBoxList _chkList = (CheckBoxList)FindControl(id[0]);
        TextBox _txt = (TextBox)FindControl(id[1]);

        //清空textbox结果;
        _txt.Text = "";

        string _in = "";
        //遍历获取结果
        foreach (ListItem li in _chkList.Items) {
            if (li.Selected) {
                _txt.Text += getResult(li); //由自定义函数完成字符串构建

                _in += li.Value + ","; //构建SQL语句需要的部分字符串
            }
        }


        //对不同commandName进行分支处理
        switch (e.CommandName) { 
            case "cmd_selist":
                string sql_s = "SELECT * FROM TB_MONITOR ";
                string sql_w = "WHERE mo_seid in (" + _in + ")";    //SQL语句,列表中,最后多一个",",不会影响执行结果
                txt_sql.Text = sql_s + '\n' + sql_w;
            break;

        }


    }

}

效果如下:


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。