C# 如何在C中创建带有3个选项的动态复选框列表#
我需要创建从数据库动态填充的复选框列表。 我没有问题,创造这个单一的选择,但与3种困惑我。 目前,我有以下代码,用于创建带有语言名称的单列复选框:C# 如何在C中创建带有3个选项的动态复选框列表#,c#,checkbox,.net-3.5,C#,Checkbox,.net 3.5,我需要创建从数据库动态填充的复选框列表。 我没有问题,创造这个单一的选择,但与3种困惑我。 目前,我有以下代码,用于创建带有语言名称的单列复选框: public void CreateCheckBox(DataSet DSDataForCheckBox, string pLangGrp) { CheckBoxList chkList = new CheckBoxList(); chkList.ID = "LanguageList"; chkList.AutoPostBac
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:我们使用的是NET3.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.
}
}
protectedvoid btnSubmitLangs\u单击(对象发送方,事件参数e)
{
foreach(Repeater1.Items中的RepeaterItem项)
{
checkboxlistlanguages=(CheckBoxList)item.FindControl(“chkListLangs”);
列出selectedLangs=chkListLanguages.Items.Cast()
.Where(listItem=>listItem.Selected)
.ToList();
//或者也可以使用foreach循环来获取所选项目。
}
}
将某些测试数据分配给中继器的代码:
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();
}
public void AssignLanguageListToRepeater()
{
列表语言=新列表
{
新语言{LangID=“1”,LangName=“English”},
新语言{LangID=“2”,LangName=“西班牙语”}
};
Repeater1.DataSource=语言;
Repeater1.DataBind();
}
希望这能帮助您……您必须创建自己的控件。没有.Net控件可以提供开箱即用的功能,或者您可以使用3个列表框并将它们放在一起。我推荐第一个选项:-)您使用的是winforms还是web应用程序?谢谢您的建议。这不完全是我的想法,但它会的。我将在TemplateField中将网格与aspx复选框一起使用。通过我,checkboxlist:RepeatColumns的这个属性是不正确的。我从来没有看到它在使用中,并认为它可能适合我的需要。