2
我有一个数据集包含许多项目,包括“blockID”和“blockName”。 我想填充它们的值为“blockName”属性的单选按钮列表,我需要按“blockID”属性对它们进行分组。即用户可以从每个“块ID”中仅选择一个“块名”。我使用c# 这可能吗? 感谢您的帮助!asp.net从数据集创建单选按钮
我有一个数据集包含许多项目,包括“blockID”和“blockName”。 我想填充它们的值为“blockName”属性的单选按钮列表,我需要按“blockID”属性对它们进行分组。即用户可以从每个“块ID”中仅选择一个“块名”。我使用c# 这可能吗? 感谢您的帮助!asp.net从数据集创建单选按钮
是的,这是可能的。我在下面做了一个例子,我知道它不是一个DataSet,但仍然是一个很好的例子,你可以做到这一点。从DataSet中映射这个结构仍然是可能的,因为在我看来这会让事情变得更容易。
鉴于数据源项目的下列块类:
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
已经与分组单块的ID
。
在你的ASPX/ASCX标记,定义一个Repeater
和订阅OnItemDataBound
事件:
<asp:Repeater ID="rptDummy" runat="server" OnItemDataBound="rptDummy_OnItemDataBound">
</asp:Repeater>
在OnItemDataBound
时,动态每个块名称是不同的单选按钮添加RadioButtonLists
,每个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);
}
}
绑定中继器:
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();
非常感谢您的回复。 有一件事我觉得我没有解释得很好,我谈到的“块”是在数据库中,我们使用一个过程从数据库中获取它。 程序返回给我们一个数据集。 该数据集包含许多“blockID”和“blockName”,我们必须根据“blockID” 非常感谢您将它们分成单选按钮组! – Javi 2013-03-03 13:50:31
是的,我的回答涵盖了许多BlockID和与其相关的许多Blockname的情况。我知道你没有使用过的数据结构,但是你可以将''Dataset''变成''''''''''''''对象的List。正如我所说,这是一个很好的选择,你想要什么。 – 2013-03-03 13:58:03
好吧,我现在看到它!非常感谢你! – Javi 2013-03-03 13:58:50