Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字典绑定到手风琴窗格_C#_Asp.net_Ajaxcontroltoolkit - Fatal编程技术网

C# 将字典绑定到手风琴窗格

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(); } 更新: 这是我想绑定

我有一个带几个窗格的手风琴控制器

在页面加载时,我想在窗格内设置控件,其中包含来自字典的数据(每个窗格有1到10个控件)


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>