限制CheckBoxList控件只能单选
开发要求,原本对CheckBoxList控件是用来让用户多选的。但现在特殊要求,这个CheckBoxList控件限制只能单选。
哈哈,看看Insus.NET做出来的效果:
为了你也能实现出来,可以参考下面的方法,第一是准备好一个对象“地支”(Terrestrial Branch)

using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary> /// Summary description for TerrestrialBranch /// </summary> namespace Insus.NET { public class TerrestrialBranch { private int _ID; private string _Name; public int ID { get{return _ID;} set { _ID = value; } } public string Name { get { return _Name; } set { _Name = value; } } public TerrestrialBranch() { // // TODO: Add constructor logic here // } public TerrestrialBranch(int id, string name) { this.ID = id; this._Name = name; } } }
用数据填充这个对象,并用泛型List<t>来存储这十二个对象:

private List<TerrestrialBranch> GetData() { List<TerrestrialBranch> tbs = new List<TerrestrialBranch>(); tbs.Add(new TerrestrialBranch(1,"子")); tbs.Add(new TerrestrialBranch(2, "丑")); tbs.Add(new TerrestrialBranch(3, "寅")); tbs.Add(new TerrestrialBranch(4, "卯")); tbs.Add(new TerrestrialBranch(5, "辰")); tbs.Add(new TerrestrialBranch(6, "巳")); tbs.Add(new TerrestrialBranch(7, "午")); tbs.Add(new TerrestrialBranch(8, "未")); tbs.Add(new TerrestrialBranch(9, "申")); tbs.Add(new TerrestrialBranch(10, "酉")); tbs.Add(new TerrestrialBranch(11, "戌")); tbs.Add(new TerrestrialBranch(12, "亥")); return tbs; }
在.aspx页面拉一个CheckBoxList控件,设置两个属性RepeatColumns="6" RepeatDirection="Horizontal"

<asp:CheckBoxList ID="CheckBoxListTerrestrialBranch" runat="server" RepeatColumns="6" RepeatDirection="Horizontal"></asp:CheckBoxList>
把刚才准备好的List<TerrestrialBranch>绑定给这个CheckBoxList控件:

using System; using System.Collections.Generic; using System.Data; using System.Data.OleDb; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Insus.NET; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) Data_Binding(); } private void Data_Binding() { this.CheckBoxListTerrestrialBranch.DataSource = GetData(); this.CheckBoxListTerrestrialBranch.DataTextField = "Name"; this.CheckBoxListTerrestrialBranch.DataValueField = "ID"; this.CheckBoxListTerrestrialBranch.DataBind(); } }
OK,一切准备就绪,可以写Javascript脚本,放在<head>之内。

window.onload = function () { var cbl = document.getElementById('<%= CheckBoxListTerrestrialBranch.ClientID %>') var inputs = cbl.getElementsByTagName("input"); for (var i = 0; i < inputs.length; i++) { if (inputs[i].type == "checkbox") { inputs[i].onclick = function () { var cbs = inputs; for (var i = 0; i < cbs.length; i++) { if (cbs[i].type == "checkbox" && cbs[i] != this && this.checked) { cbs[i].checked = false; } } } } } }
标签:
JavaScript
, FUNCTION
, js
, CheckBoxList
, Checked
, getElementById
, getElementsByTagName
, ClientID
, onClick
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
2011-01-22 T-SQL LIKE 谓词
2011-01-22 SQL Mail XPs Options
2011-01-22 SQL Server PATINDEX Functions
2011-01-22 T-SQL通配符(wildcard)
2011-01-22 T-SQL IN 谓词