如何从asp.net中的复选框列表控件返回选定的项目

2024-03-27

我试图以字符串形式返回动态绑定的复选框列表控件中选定的项目,但没有成功。我希望有人能提供帮助。在我的代码隐藏文件中,我连接到一个名为 users 的类并构建一个数据表。然后我将数据表绑定到 cblist 控件

        private void populateUserList() //called on page load
    {

            SubmitOptions mySubmission = new SubmitOptions(juris, rptType, tmplName);

            if (mySubmission.Users.Count == 0)
            {
                lbl_juris.Visible = false;
                cb_selectUser.Visible = false;
                lbl_AlertMsg.Visible = true;
                btnSelect.Visible = false;
                lbl_AlertMsg.Text = "No supervisors listed for jursidiction: " + juris.ToString();
            }
            else
            {

                dt.Columns.Add("Users");
                for (int i = 0; i < mySubmission.Users.Count(); i++)
                {
                    DataRow dr = dt.NewRow();
                    dr["Users"] = mySubmission.Users[i];
                    dt.Rows.Add(dr);
                }

                cb_selectUser.DataSource = dt;
                cb_selectUser.DataBind();
            }

     }

在主 aspx 文件中,我将控件定义为:

<asp:CheckBoxList ID="cb_selectUser"
       Width="400px" 
       Height="100%"
       AutoPostBack="false"  
       runat="server"  
       CellPadding="2"  
       CellSpacing="5"
       DataTextField="Users" 
       DataValueField="Users"
        >
        </asp:CheckBoxList>

我尝试了以下代码,在其中迭代列表,但这似乎只有在我将值硬编码到复选框列表中作为列表项时才有效。

 protected void btn_returnUserList(object sender, System.Web.UI.ImageClickEventArgs e)
    {
        for (int i = 0; i < cb_selectUser.Items.Count; i++)
        {
            if (cb_selectUser.Items[i].Selected)
            {

                selectedUsers += cb_selectUser.Items[i].Text;
            }
        }

该列表填充得很好,我想要做的就是以字符串形式返回复选框列表控件中所有选定的用户。

正如我所说,如果我将项目值硬编码到控件中,则上面的代码可以工作,并且我可以看到字符串中选定的项目,但是删除项目列表标签并切换到绑定不会发生任何情况。上述方法计算了返回的总数,但没有返回任何选定的内容。

任何关于我所缺少的内容的提示或建议将不胜感激。


这是页面完全按您想要的方式工作的完整代码。只需添加一个 CheckboxList 表单,将其命名为 list1,添加一个按钮,将其命名为 btn,然后添加一个标签并将其命名为 lbl。

protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                var dt = new DataTable();
                dt.Columns.Add("Users");

                const string str = "User {0}";
                for(var i=1;i<=10;i++)
                {
                    //var r = dt.NewRow();
                    //r.ItemArray=new object[]{string.Format(str,i)};
                    dt.Rows.Add(new object[] {string.Format(str, i)});
                }
                list1.DataSource = dt;
                list1.DataTextField = "Users";
                list1.DataBind();
            }
        }

        protected void btn_Click(object sender, EventArgs e)
        {
            var s = list1.Items.Cast<ListItem>()
                   .Where(item => item.Selected)
                   .Aggregate("", (current, item) => current + (item.Text + ", "));
            lbl.Text = s.TrimEnd(new[] {',', ' '});
        }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从asp.net中的复选框列表控件返回选定的项目 的相关文章

随机推荐