C# 将字典绑定到手风琴窗格
我有一个带几个窗格的手风琴控制器 在页面加载时,我想在窗格内设置控件,其中包含来自字典的数据(每个窗格有1到10个控件)C# 将字典绑定到手风琴窗格,c#,asp.net,ajaxcontroltoolkit,C#,Asp.net,Ajaxcontroltoolkit,我有一个带几个窗格的手风琴控制器 在页面加载时,我想在窗格内设置控件,其中包含来自字典的数据(每个窗格有1到10个控件) ASPX 一些文本 一些文本 C# 受保护的无效页面加载(对象发送方,事件参数e) { Dictionary dic=新字典(); dic.添加(“键1”、“XXXXXXXXX”); dic.添加(“键2”,“YYYYYYYYYY”); Accordion1.DataSource=dic; Accordion1.DataBind(); } 更新: 这是我想绑定
ASPX
一些文本
一些文本
C#
受保护的无效页面加载(对象发送方,事件参数e)
{
Dictionary dic=新字典();
dic.添加(“键1”、“XXXXXXXXX”);
dic.添加(“键2”,“YYYYYYYYYY”);
Accordion1.DataSource=dic;
Accordion1.DataBind();
}
更新:
这是我想绑定到手风琴上的一个词汇表示例:
var dic = new Dictionary<string, IEnumerable<object>>();
dic.Add("Item1", new List<object>() //This to Pane 1
{
new { SNumber = 12345 },
new { Color = "Blue" },
new { Size = "Large" },
});
dic.Add("Item2", new List<object>() //This to Pane 2
{
new { SNumber = 1235678 },
new { type = "OM" }
});
Accordion1.DataSource = dic;
Accordion1.DataBind();
}
var dic=newdictionary();
dic.Add(“Item1”,new List()//将此添加到窗格1
{
新的{SNumber=12345},
新的{Color=“Blue”},
新的{Size=“Large”},
});
dic.Add(“Item2”,new List()//将此添加到窗格2中
{
新的{SNumber=1235678},
新建{type=“OM”}
});
Accordion1.DataSource=dic;
Accordion1.DataBind();
}
在aspx上,我想为每个部分创建一个窗格(在本例中为2个窗格),并在每个窗格中为所需的值定义Eval
p、 s.我不认为这是个问题,但如果字典绑定是个问题,我可以绑定其他东西,比如xmldocument等等……您似乎对将字典值绑定到手风琴感兴趣。要利用数据绑定,您应该使用控件的模板,而不是显式定义accordion窗格。例如:
<cc1:Accordion ID="Accordion1" runat="server"
FadeTransitions="True"
SelectedIndex="0"
HeaderCssClass="accordionHeader"
ContentCssClass="accordionContent"
Width="370px">
<HeaderTemplate>
<h2><asp:Label runat="server" Text='<%# Eval("Key") %>' /></h2>
</HeaderTemplate>
<ContentTemplate>
<div><asp:Label runat="server" Text='<%# Eval("Value") %>' /></div>
</ContentTemplate>
</cc1:Accordion>
假设目的是在同一内容区域内呈现每种颜色。这可以通过将字典值数据绑定到中继器来实现,如下所示:
<cc1:Accordion ID="Accordion1" runat="server"
FadeTransitions="True"
SelectedIndex="0"
HeaderCssClass="accordionHeader"
ContentCssClass="accordionContent"
Width="370px">
<HeaderTemplate>
<h2><asp:Label ID="Label1" runat="server" Text='<%# Eval("Key") %>' /></h2>
</HeaderTemplate>
<ContentTemplate>
<asp:Repeater ID="repeater" runat="server" DataSource='<%# Eval("Value") %>'>
<ItemTemplate>
<div><asp:Label runat="server" Text='<%# Eval("Color") %>' /></div>
</ItemTemplate>
</asp:Repeater>
</ContentTemplate>
</cc1:Accordion>
快乐编码 您需要嵌套数据绑定控件 最重要的是你的手风琴,它被绑定到字典里 accordion面板的内容是另一个数据绑定控件——不完全确定在这种情况下什么是合适的——您希望绑定到作为字典值的列表 对于accordion面板,使用OnDataBound事件(假设有一个)可能最容易做到这一点
在这一点上,我无法提供一个有效的示例。这不是我需要的。我希望在一个窗格中有多个值。ContentTemplate只允许每个窗格有一个值。@提问者:发布的问题没有每个字典键有多个值。如果你的需求是不同的,你可以考虑修改你的问题。请注意,我提供的解决方案允许显示多个数据段,前提是数据是值的属性。我更新了我的帖子,以反映另一种方法,在绑定实际上是对象集合而不是单个对象的字典值时非常有用。我希望这能有所帮助。这就是为什么我要学习如何将数据绑定到accordionpane,我有大约10个窗格(每个窗格都是一个类别或“集合”),每个窗格中有大约10个字段要绑定。
<cc1:Accordion ID="Accordion1" runat="server"
FadeTransitions="True"
SelectedIndex="0"
HeaderCssClass="accordionHeader"
ContentCssClass="accordionContent"
Width="370px">
<HeaderTemplate>
<h2><asp:Label runat="server" Text='<%# Eval("Key") %>' /></h2>
</HeaderTemplate>
<ContentTemplate>
<div><asp:Label runat="server" Text='<%# Eval("Value") %>' /></div>
</ContentTemplate>
</cc1:Accordion>
protected void Page_Load(object sender, EventArgs e)
{
Dictionary<string, object> dic = new Dictionary<string, object>();
dic.Add("key1", new { Color = "Red", Age = 15 });
dic.Add("key2", new { Color = "Green", Age = 25 });
Accordion1.DataSource = dic;
Accordion1.DataBind();
}
<cc1:Accordion ID="Accordion1" runat="server"
FadeTransitions="True"
SelectedIndex="0"
HeaderCssClass="accordionHeader"
ContentCssClass="accordionContent"
Width="370px">
<HeaderTemplate>
<h2><asp:Label runat="server" Text='<%# Eval("Key") %>' /></h2>
</HeaderTemplate>
<ContentTemplate>
<div><asp:Label runat="server" Text='<%# Eval("Value.Color") %>' /></div>
<div><asp:Label runat="server" Text='<%# Eval("Value.Age") %>' /></div>
</ContentTemplate>
</cc1:Accordion>
var dic = new Dictionary<string, IEnumerable<object>>();
dic.Add("key1", new List<object>()
{
new { Color = "Red" },
new { Color = "Blue" }
});
dic.Add("key2", new List<object>()
{
new { Color = "Yellow" },
new { Color = "Orange" }
});
<cc1:Accordion ID="Accordion1" runat="server"
FadeTransitions="True"
SelectedIndex="0"
HeaderCssClass="accordionHeader"
ContentCssClass="accordionContent"
Width="370px">
<HeaderTemplate>
<h2><asp:Label ID="Label1" runat="server" Text='<%# Eval("Key") %>' /></h2>
</HeaderTemplate>
<ContentTemplate>
<asp:Repeater ID="repeater" runat="server" DataSource='<%# Eval("Value") %>'>
<ItemTemplate>
<div><asp:Label runat="server" Text='<%# Eval("Color") %>' /></div>
</ItemTemplate>
</asp:Repeater>
</ContentTemplate>
</cc1:Accordion>