如何在触发回发的CheckBoxList中获取ListItem

本文关键字:CheckBoxList 获取 ListItem | 更新日期: 2023-09-27 18:05:16

我有两个CheckBoxList,我需要能够设置在一个CheckBoxList中选择的listtiitems取决于在另一个CheckBoxList中选择的项目。

我如何知道CheckBoxList中的哪个ListItem发出了回发?该方法必须在服务器上运行。

解决方案更新:

我使用的最终解决方案(感谢四):

protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
    var selectedItem = CheckBoxList1.SelectedItem;
}

其中selectedItem为被点击的ListItem

如何在触发回发的CheckBoxList中获取ListItem

将AutoPostBack属性设置为True,然后在服务器上进行更改:如何在CheckBoxList中使用AutoPostBack功能

<asp:CheckBoxList   
         ID="CheckBoxList1"  
         runat="server"  
         AutoPostBack="true"  
         OnSelectedIndexChanged="CheckBoxList1_SelectedIndexChnaged"  
> 

要查看哪些listitem已经被选中,您可以遍历CheckBoxList,如下所示:

protected void CheckBoxList1_SelectedIndexChnaged(object sender, System.EventArgs e)  
{  
    Label1.Text = "You Selected:<br /><i>";  
    foreach (ListItem li in CheckBoxList1.Items)  
    {  
        if (li.Selected == true)  
        {  
            Label1.Text += li.Text + "<br />";  
        }  
    }  
    Label1.Text += "</i>";  
}

要获得已检查的listtitem的值,而不遍历所有listtitem,您可以执行以下操作:

protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
    CheckBoxList list = (CheckBoxList)sender;
    string[] control = Request.Form.Get("__EVENTTARGET").Split('$');
    int index = control.Length - 1;
    ListItem li = (ListItem)list.Items[Int32.Parse(control[index])];
}

现在你已经检查了实际的listtitem,你可以随意处理它

更简单:

var selectedItem = CheckBoxList1.SelectedItem;