gpt4 book ai didi

c# - asp.net 从数据集创建单选按钮

转载 作者:太空宇宙 更新时间:2023-11-03 11:07:46 27 4
gpt4 key购买 nike

我有一个包含许多项目的数据集,包括“blockID”和“blockName”。我想填充单选按钮列表,它们的值将是“blockName”属性,我需要它们按“blockID”属性分组。即用户只能从每个“blockID”中选择一个“blockName”。我正在使用 C#那可能吗?感谢您的帮助!

最佳答案

是的,这是可能的。我在下面做了一个例子,我知道它不是一个数据集,但仍然是一个很好的例子,说明你如何做到这一点。仍然可以从该结构的 DataSet 进行映射,因为在我看来,这确实会使事情变得更容易。

给定以下 DataSource 项的 block 类:

public class Block
{
public int ID { get; set; }
public List<string> BlockNames { get; set; }

public Block(int id, params string[] names)
{
ID = id;
BlockNames = new List<string>();
foreach (var item in names)
{
BlockNames.Add(item);
}
}
}

你看,对于这个类,BlockNames 已经与单个 block 的 ID 分组。

在您的 ASPX/ASCX 标记中,定义一个 Repeater 并订阅 OnItemDataBound 事件:

<asp:Repeater ID="rptDummy" runat="server" OnItemDataBound="rptDummy_OnItemDataBound">
</asp:Repeater>

OnItemDataBound 事件中,动态添加 RadioButtonLists,每个 BlockName 是一个不同的 RadioButton,每个 RadioButtonList 是一个不同的 BlockID:

protected void rptDummy_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Block blk = (Block)e.Item.DataItem;
RadioButtonList list = new RadioButtonList();
list.ID = "rblBlocks";
list.Attributes.Add("BlockID", blk.ID.ToString());

foreach (string item in blk.BlockNames)
{
list.Items.Add(new ListItem(item, item));
}

e.Item.Controls.Add(list);
}
}

绑定(bind)转发器:

List<Block> blocks = new List<Block>();

blocks.Add(new Block(1, "BlockName1", "BlockName2", "BlockName3"));
blocks.Add(new Block(2, "BlockName4", "BlockName5"));
blocks.Add(new Block(3, "BlockName6"));

rptDummy.DataSource = blocks;
rptDummy.DataBind();

关于c# - asp.net 从数据集创建单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15183943/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com