在ASP.net C#中将每个checkboxlist项存储到自己的变量中

时间:2018-02-02 01:25:35

标签: c# asp.net

我正在尝试将每个复选框值存储到自己的变量中,以便我可以将该变量添加到SQL Server数据库的列中。

无论如何我可以设置'for each'循环,这样当它从复选框列表中读取值时,它会将值存储在以值命名的字符串变量中吗?

即。 string garden =“garden”; //如果已选中花园复选框

<asp:CheckBoxList  ID="chkAmenities"   RepeatLayout="Flow" RepeatDirection="Horizontal" runat="server">
                <asp:ListItem>Furnished</asp:ListItem>
                <asp:ListItem>Parking</asp:ListItem>
                <asp:ListItem>Garden</asp:ListItem>
                <asp:ListItem>Terrace/Balcony</asp:ListItem>
                <asp:ListItem>Wifi</asp:ListItem>
                <asp:ListItem>Heating</asp:ListItem>
            </asp:CheckBoxList>

2 个答案:

答案 0 :(得分:1)

对不起,为什么你不用字典呢?你可以这么简单:

var items = new Dictionary<string, string>();

foreach(ListItem v in chkAmenities.Items)
{
    items.Add(v.Value, v.Text);
}

因此,您可以参考每个项目:项目[“停车”]

只是我的替代解决方案。

答案 1 :(得分:0)

试试这个,您可以获取所选项目并将值存储到其自己的变量中

string Furnished = string.Empty;
        string Parking = string.Empty;
        string Garden = string.Empty;
        string Terrace = string.Empty;
        string Wifi = string.Empty;
        string Heating = string.Empty;

        List<ListItem> selectedItem = chkAmenities.Items.Cast<ListItem>().Where(li => li.Selected).ToList();
        foreach (ListItem item in selectedItem)
        {
            switch (item.Text)
            {
                case "Furnished": Furnished = "Furnished"; break;
                case "Parking": Parking = "Parking"; break;
                case "Garden": Garden = "Garden"; break;
                case "Terrace/Balcony": Terrace = "Terrace/Balcony"; break;
                case "Wifi": Wifi = "Wifi"; break;
                case "Heating": Heating = "Heating"; break;
            }
        }