如何从asp.net中的checkboxlist控件返回所选项目

rlc*_*ews 2 c# asp.net

我试图在字符串中返回动态绑定的复选框列表控件中的所选项目,没有运气.我希望有人可以提供帮助.在我的代码隐藏文件中,我正在连接一个名为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();
            }

     }
Run Code Online (Sandbox Code Playgroud)

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

<asp:CheckBoxList ID="cb_selectUser"
       Width="400px" 
       Height="100%"
       AutoPostBack="false"  
       runat="server"  
       CellPadding="2"  
       CellSpacing="5"
       DataTextField="Users" 
       DataValueField="Users"
        >
        </asp:CheckBoxList>
Run Code Online (Sandbox Code Playgroud)

我尝试了下面的代码,我在列表中进行了迭代,但这似乎只有当我将值硬编码到Checkboxt列表中作为listitems时才会起作用.

 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;
            }
        }
Run Code Online (Sandbox Code Playgroud)

列表填充正常,我想要做的就是从复选框列表控件中以字符串形式返回所有选定的用户.

正如我所说,如果我将项目值硬编码到控件中,上面的代码可以工作,我可以看到字符串中的选定项目,但是删除itemslist标签并切换到绑定nothign.上面的方法计算了整个返回数,但是没有返回任何选择.

任何有关我缺少的提示或建议将不胜感激.

The*_*iot 9

这里是完全符合您需要的完整页面代码.只需添加一个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[] {',', ' '});
        }
Run Code Online (Sandbox Code Playgroud)