如何在 C# 中创建具有 3 个选项的动态复选框列表

how to create Dynamic check-box list with 3 options in C#

我需要创建从数据库动态填充的复选框列表。 我对使用单一选项创建它没有问题,但使用 3 - 有点让我困惑。 目前我有以下代码创建具有语言名称的单列复选框:

public void CreateCheckBox(DataSet DSDataForCheckBox, string pLangGrp)
{
    CheckBoxList chkList = new CheckBoxList();
    chkList.ID = "LanguageList";
    chkList.AutoPostBack = true;
    chkList.DataSource = DSDataForCheckBox;
    chkList.DataTextField = "LangName";
    chkList.DataValueField = "LangID";
    chkList.DataBind();

    Panel pLang = new Panel();

    if (pLangGrp != "")
    {
        pLang.GroupingText = pLangGrp;

    }
    else
    {
        pLang.GroupingText = "Non Assigned Group";

    }
    pLang.Controls.Add(chkList);
    this.Form.Controls.Add(pLang);

}

需要专家的帮助。 谢谢

PS:我们在 NET 3.5 上,所以 4.0 中的很多选项对我来说不可用。

您可以使用转发器控件或任何基于列表的控件来实现此目的。

这只是为了提供一些想法,您可以根据自己的要求进行研究。

ASPX

<asp:Repeater ID="Repeater1" runat="server" EnableViewState="False">
            <HeaderTemplate>
                <table>
            </HeaderTemplate>
            <ItemTemplate>

                <tr>
                    <td class="RowStyle"><%# Eval("LangName") %></td>
                    <td>

                        <asp:CheckBoxList ID="chkListLangs" runat="server" RepeatDirection="Horizontal">
                            <asp:ListItem Text="R" Value="R"></asp:ListItem>
                            <asp:ListItem Text="W" Value="W"></asp:ListItem>
                            <asp:ListItem Text="S" Value="S"></asp:ListItem>
                        </asp:CheckBoxList>
                    </td>

                </tr>
            </ItemTemplate>
            <FooterTemplate>
                </table>
            </FooterTemplate>
</asp:Repeater>

后面的代码 以获取所选值:

protected void btnSubmitLangs_Click(object sender, EventArgs e)
{
    foreach (RepeaterItem item in Repeater1.Items)
    {
      CheckBoxList chkListLanguages = (CheckBoxList)item.FindControl("chkListLangs");

      List<ListItem> selectedLangs = chkListLanguages.Items.Cast<ListItem>()
                                     .Where(listItem => listItem.Selected)
                                     .ToList();
      //Or you can use foreach loop also to get the selected items.
    }

}

将一些测试数据分配给中继器的代码:

public void AssignLanguageListToRepeater()
{
     List<Language> languages = new List<Language>
     {
         new Language{LangID="1", LangName="English"},
         new Language{LangID="2", LangName="Spanish"}
     };
     Repeater1.DataSource = languages;
     Repeater1.DataBind();
}

希望这对你有帮助...