ASP.NET中获取CheckBoxList的当前选择项

CheckBoxList中有多个项,当选择/不选择某项时如果其AutoPostBack为True,则会触发SelectedIndexChanged,但是CheckBoxList及其Items属性都没有直接能获取当前选择的项的属性,想了一下,可以先将上一次的勾选状态存到ViewState中,在触发SelectedIndexChanged的时候进行比较,具体代码如下:
  1. <%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="Default.aspx.cs"Inherits="WebApplication1._Default"%>
  2. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <htmlxmlns="http://www.w3.org/1999/xhtml">
  4. <headrunat="server">
  5. <title>无标题页</title>
  6. </head>
  7. <body>
  8. <formid="form1"runat="server">
  9. <div>
  10. <asp:CheckBoxListID="CheckBoxList1"runat="server"AutoPostBack="True"
  11. onprerender="CheckBoxList1_PreRender"
  12. onselectedindexchanged="CheckBoxList1_SelectedIndexChanged"
  13. RepeatDirection="Horizontal">
  14. <asp:ListItem>1</asp:ListItem>
  15. <asp:ListItem>2</asp:ListItem>
  16. <asp:ListItemSelected="True">3</asp:ListItem>
  17. <asp:ListItem>4</asp:ListItem>
  18. <asp:ListItem>5</asp:ListItem>
  19. </asp:CheckBoxList>
  20. </div>
  21. </form>
  22. </body>
  23. </html>
  1. usingSystem;
  2. usingSystem.Collections.Generic;
  3. namespaceWebApplication1
  4. {
  5. publicpartialclass_Default:System.Web.UI.Page
  6. {
  7. protectedvoidPage_Load(objectsender,EventArgse)
  8. {
  9. Dictionary<int,bool>dic=newDictionary<int,bool>();
  10. for(inti=0;i<CheckBoxList1.Items.Count;i++)
  11. dic.Add(i,CheckBoxList1.Items[i].Selected);
  12. if(ViewState["cblChecked"]==null)
  13. ViewState["cblChecked"]=dic;
  14. }
  15. protectedvoidCheckBoxList1_SelectedIndexChanged(objectsender,EventArgse)
  16. {
  17. if(ViewState["cblChecked"]!=null)
  18. {
  19. Dictionary<int,bool>dic=ViewState["cblChecked"]asDictionary<int,bool>;
  20. for(inti=0;i<CheckBoxList1.Items.Count;i++)
  21. {
  22. if(dic[i]!=CheckBoxList1.Items[i].Selected)
  23. Response.Write("当前操作项为:"+i.ToString());
  24. dic[i]=CheckBoxList1.Items[i].Selected;
  25. }
  26. ViewState["cblChecked"]=dic;
  27. }
  28. }
  29. }
  30. }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现 ASP.NET CheckboxList 的两个联动,需要使用 JavaScript 和 Ajax 技术。 1. 在页面添加两个 CheckboxList 控件,并给它们分别添加一个 onchange 事件。 ```html <asp:CheckBoxList ID="checkboxlist1" runat="server" onchange="handleChange(this)"> </asp:CheckBoxList> <asp:CheckBoxList ID="checkboxlist2" runat="server" onchange="handleChange(this)"> </asp:CheckBoxList> ``` 2. 在 JavaScript 编写 handleChange() 方法,获取选中的值,并通过 Ajax 发送请求获取下一个 CheckboxList 的数据。 ```javascript function handleChange(checkbox) { // 获取选中的值 var selectedValue = checkbox.value; // 发送 Ajax 请求 $.ajax({ type: "GET", url: "GetData.aspx?value=" + selectedValue, success: function (data) { // 绑定数据到下一个 CheckboxList $('#checkboxlist2').empty(); $.each(data, function (key, value) { $('#checkboxlist2').append('<option value="' + value.Value + '">' + value.Text + '</option>'); }); } }); } ``` 其,GetData.aspx 是获取下一个 CheckboxList 数据的页面,value 是当前选中的值。 3. 在 GetData.aspx.cs 编写代码,获取数据并返回 JSON 格式的数据。 ```csharp protected void Page_Load(object sender, EventArgs e) { string value = Request.QueryString["value"]; DataTable dt = GetDataFromDatabase(value); List<object> list = new List<object>(); foreach (DataRow row in dt.Rows) { list.Add(new { Value = row["Value"], Text = row["Text"] }); } Response.Write(new JavaScriptSerializer().Serialize(list)); } ``` 其,GetDataFromDatabase() 是获取数据的自定义方法,返回一个 DataTable 对象。 通过以上步骤,即可实现 ASP.NET CheckboxList 的两个联动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值