如何使用Request.Form知道从CheckBoxList中选择哪些值项?

时间:2011-06-13 11:02:42

标签: checkboxlist

如何使用Request.Form?

获取从CheckBoxList中选择的值项

我看到这两个表单键:

[12]: "ctl00$MainContent$cblTimeOfDay$0"
[13]: "ctl00$MainContent$cblTimeOfDay$3"

0和3是我的复选框列表中的选定值,它有4个项目。

我需要在Page_Init

上以编程方式找到这些值

感谢,

2 个答案:

答案 0 :(得分:0)

我不确定是否通过Request.Form访问这些内容。你不能访问强类型CheckBoxList控件本身吗? This article提供了一种接受CheckBoxList并返回所有选定值的简单方法;您可以更新此选项以返回对所选项目的引用或您需要的任何其他细节:

public string[] CheckboxListSelections(System.Web.UI.WebControls.CheckBoxList list)
{
    ArrayList values = new ArrayList();
    for(int counter = 0; counter < list.Items.Count; counter++)
    {
        if(list.Items[counter].Selected)
        {
            values.Add(list.Items[counter].Value);
        }    
    }
    return (String[]) values.ToArray( typeof( string ) );
 }

因此,在Page_Init事件处理程序中,调用如下:

var selectedValues = CheckboxListSelections(myCheckBoxList);

其中myCheckBoxList是对CheckBoxList控件的引用。

答案 1 :(得分:0)

我写的这个方法有效,但效果不佳:

public static TimeOfDay Create(NameValueCollection httpRequestForm, string checkBoxId)
        {
            var result = new TimeOfDay();

            var selectedCheckBoxItems = from key in httpRequestForm.AllKeys
                       where key.Contains(checkBoxId)
                       select httpRequestForm.Get(key);

            if (selectedCheckBoxItems.Count() == 0)
            {
                result.ShowFull = true;
                return result;
            }

            foreach (var item in selectedCheckBoxItems)
            {
                var selectedValue = int.Parse(item.Substring(item.Length));

                    switch (selectedValue)
                    {
                        case 0:
                            result.ShowAm = true;
                            break;
                        case 1:
                            result.ShowPm = true;
                            break;
                        case 2:
                            result.ShowEvening = true;
                            break;
                        case 3:
                            result.ShowFull = true;
                            break;
                        default:
                            throw new ApplicationException("value is not supported int the check box list.");
                    }
                }

            return result;
        }

并像这样使用它:

TimeOfDay.Create(this.Request.Form, this.cblTimeOfDay.ID)